@acorex-platform/framework-client 0.0.54 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-framework-client-common.mjs +39 -20
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +129 -52
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +48 -34
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-bGKRfOH2.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DLW9GiJh.mjs} +215 -211
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DLW9GiJh.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-9inrzTyH.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-BY_hDj8A.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-9inrzTyH.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-BY_hDj8A.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-C4fDZV2N.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-DccwhqkT.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-C4fDZV2N.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-DccwhqkT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BFdbsR0q.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-D7xxrauC.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BFdbsR0q.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-D7xxrauC.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +21 -10
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-nVzW1Bka.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DuFZf8eb.mjs} +271 -252
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DuFZf8eb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DfK7xcSW.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BiGUrkFi.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DfK7xcSW.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BiGUrkFi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-D7P08nHH.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DP9mP1CR.mjs} +8 -5
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DP9mP1CR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DZbHlccx.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYg6-PoM.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DZbHlccx.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYg6-PoM.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-Dh_hRxZX.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-Dh_hRxZX.mjs.map → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-bC_uPN9l.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-bC_uPN9l.mjs.map → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CDzBgDt7.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-2Re1-MvA.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CDzBgDt7.mjs.map → acorex-platform-framework-client-themes-default-entity-master-single-view.component-2Re1-MvA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-CaV3MdRr.mjs → acorex-platform-framework-client-themes-default-error-401.component-1lfBpY_d.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-CaV3MdRr.mjs.map → acorex-platform-framework-client-themes-default-error-401.component-1lfBpY_d.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-CTA-lxYp.mjs → acorex-platform-framework-client-themes-default-error-404.component-BeWyRCJr.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-CTA-lxYp.mjs.map → acorex-platform-framework-client-themes-default-error-404.component-BeWyRCJr.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-PvveUj5c.mjs +22 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-PvveUj5c.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +37 -47
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +4 -4
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/i18n/en-AU/activity-log.json +71 -0
- package/i18n/en-AU/common-plugins.json +96 -0
- package/i18n/en-AU/dynamic-form-designer.json +126 -0
- package/i18n/en-AU/general.json +2294 -0
- package/i18n/en-AU/layout-designer.json +173 -0
- package/i18n/en-AU/layout.json +258 -0
- package/i18n/en-AU/platform-layout-widgets.json +332 -0
- package/i18n/en-US/activity-log.json +71 -0
- package/i18n/en-US/common-plugins.json +96 -0
- package/i18n/en-US/dynamic-form-designer.json +126 -0
- package/i18n/en-US/general.json +2294 -0
- package/i18n/en-US/layout-designer.json +173 -0
- package/i18n/en-US/layout.json +258 -0
- package/i18n/en-US/platform-layout-widgets.json +336 -0
- package/i18n/fa-IR/activity-log.json +71 -0
- package/i18n/fa-IR/common-plugins.json +126 -0
- package/i18n/fa-IR/dynamic-form-designer.json +126 -0
- package/i18n/fa-IR/general.json +2295 -0
- package/i18n/fa-IR/layout-designer.json +173 -0
- package/i18n/fa-IR/layout.json +258 -0
- package/i18n/fa-IR/platform-layout-widgets.json +336 -0
- package/package.json +2 -2
- package/types/acorex-platform-framework-client-common.d.ts +3 -1
- package/types/acorex-platform-framework-client-layout-components.d.ts +3 -1
- package/types/acorex-platform-framework-client-layout-designer.d.ts +1 -0
- package/types/acorex-platform-framework-client-layout-entity.d.ts +2 -1
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +3 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-bGKRfOH2.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-nVzW1Bka.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-D7P08nHH.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-B85b0lsa.mjs +0 -19
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-B85b0lsa.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-framework-client-themes-shared.mjs","sources":["../../../../../libs/framework/client/themes/shared/src/lib/contracts/settings.keys.ts","../../../../../libs/framework/client/themes/shared/src/lib/contracts/theme.types.ts","../../../../../libs/framework/client/themes/shared/src/lib/contracts/theme-boot.util.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-options.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-regional.util.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/regional-font-styles.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/regional-font-style-loader.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/theme.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/slots/theme-slot.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/palette.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/contracts/index.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser.token.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-popup.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-edit.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-default.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-lazy-load.directive.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-popup.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-popup.component.html","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.component.html","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-color-chooser/theme-color-chooser.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-color-chooser/theme-color-chooser-edit.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-color-chooser/theme-color-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-appearance-chooser/menu-appearance-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-appearance-chooser/menu-appearance-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/header-appearance-chooser/header-appearance-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/header-appearance-chooser/header-appearance-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widget-definition.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/shared.module.ts","../../../../../libs/framework/client/themes/shared/src/acorex-platform-framework-client-themes-shared.ts"],"sourcesContent":["export enum AXPThemeLayoutSetting {\n Name = 'Common:Setting:Layout.Name',\n Layout = 'Common:Setting:Layout.Layout',\n Font = 'Common:Setting:Layout.Font.Family',\n FontSize = 'Common:Setting:Layout.Font.Size',\n Palette = 'Common:Setting:Layout.Palette',\n Mode = 'Common:Setting:Layout.Mode',\n SideMenuStatus = 'Common:Setting:Layout.SideMenu.Status',\n SideMenuWidth = 'Common:Setting:Layout.SideMenu.Width',\n SideMenuCompactWidth = 'Common:Setting:Layout.SideMenu.CompactWidth',\n MenuOrientation = 'Common:Setting:Layout.RootMenu.Direction',\n MenuVerticalMode = 'Common:Setting:Layout.RootMenu.VerticalMode',\n MenuToggleCyclesStyle = 'Common:Setting:Layout.RootMenu.ToggleCyclesStyle',\n MenuBadgeVisible = 'Common:Setting:Layout.RootMenu.Badge',\n MenuLookWithLine = 'Common:Setting:Layout.RootMenu.LookWithLine',\n MenuChildBackgroundDarker = 'Common:Setting:Layout.RootMenu.ChildBackgroundDarker',\n MenuDensity = 'Common:Setting:Layout.RootMenu.Density',\n MenuDark = 'Common:Setting:Layout.RootMenu.Dark',\n MenuFooterFullWidth = 'Common:Setting:Layout.RootMenu.Footer.FullWidth',\n HeaderAppearance = 'Common:Setting:Layout.Header.Appearance',\n}\n","export interface AXPThemePaletteColors {\n primary: string;\n secondary: string;\n success: string;\n warning: string;\n danger: string;\n accents: string[];\n dark: string;\n light: string;\n}\n\nexport interface AXPThemePalette {\n name: string;\n title: string;\n colors: AXPThemePaletteColors;\n}\n\n// Theme Enum\nexport enum AXPThemeMode {\n Light = 'light',\n Dark = 'dark',\n System = 'system',\n}\n\n// Side Menu State Enum\nexport enum AXPSideMenuState {\n Opened = 'opened',\n Closed = 'closed',\n}\n\nexport function normalizeSideMenuState(value: unknown, fallback: AXPSideMenuState): AXPSideMenuState {\n if (value === AXPSideMenuState.Opened || value === AXPSideMenuState.Closed) {\n return value;\n }\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'opened' || normalized === 'open') {\n return AXPSideMenuState.Opened;\n }\n if (normalized === 'closed' || normalized === 'close') {\n return AXPSideMenuState.Closed;\n }\n }\n if (typeof value === 'object' && value !== null && 'id' in value) {\n return normalizeSideMenuState((value as { id: unknown }).id, fallback);\n }\n return fallback;\n}\n\n// Menu Orientation Enum\nexport enum AXPMenuOrientation {\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\n// Vertical side menu display mode\nexport enum AXPMenuVerticalMode {\n Compact = 'compact',\n Full = 'full',\n}\n\nexport const AXP_SIDE_MENU_FULL_DEFAULT_WIDTH = 300;\nexport const AXP_SIDE_MENU_COMPACT_WIDTH = 80;\n\n/** Root vertical side-menu appearance persisted in layout settings. */\nexport type AXPMenuAppearance = 'dark' | 'light' | 'brand-light' | 'brand-dark';\n\nexport function normalizeMenuAppearance(\n value: unknown,\n fallback: AXPMenuAppearance = 'dark',\n): AXPMenuAppearance {\n if (\n value === 'dark' ||\n value === 'light' ||\n value === 'brand-light' ||\n value === 'brand-dark'\n ) {\n return value;\n }\n\n // Legacy persisted value before brand light/dark split.\n if (value === 'brand') {\n return 'brand-light';\n }\n\n if (typeof value === 'boolean') {\n return value ? 'dark' : 'light';\n }\n\n return fallback;\n}\n\n/** Main application header appearance persisted in layout settings. */\nexport type AXPHeaderAppearance = 'brand' | 'simple';\n\nexport function normalizeHeaderAppearance(\n value: unknown,\n fallback: AXPHeaderAppearance = 'brand',\n): AXPHeaderAppearance {\n if (value === 'brand' || value === 'simple') {\n return value;\n }\n\n return fallback;\n}\n","import { AXPThemeMode } from './theme.types';\n\n//#region ----- Theme boot cache (first paint) -----\n\n/** localStorage key for last applied layout mode (`light` | `dark` | `system`). */\nexport const AXP_THEME_BOOT_MODE_KEY = 'axp-boot-theme-mode';\n\n/** localStorage key for last applied palette name. */\nexport const AXP_THEME_BOOT_PALETTE_KEY = 'axp-boot-theme-palette';\n\nexport function coerceThemeMode(value: unknown, fallback: AXPThemeMode): AXPThemeMode {\n if (value === AXPThemeMode.Light || value === AXPThemeMode.Dark || value === AXPThemeMode.System) {\n return value;\n }\n if (typeof value === 'object' && value !== null && 'id' in value) {\n return coerceThemeMode((value as { id: unknown }).id, fallback);\n }\n return fallback;\n}\n\nexport function readBootThemeMode(): AXPThemeMode {\n try {\n return coerceThemeMode(localStorage.getItem(AXP_THEME_BOOT_MODE_KEY), AXPThemeMode.Light);\n } catch {\n return AXPThemeMode.Light;\n }\n}\n\nexport function readBootThemePalette(): string {\n try {\n const name = localStorage.getItem(AXP_THEME_BOOT_PALETTE_KEY)?.trim();\n return name && name.length > 0 ? name : 'default';\n } catch {\n return 'default';\n }\n}\n\nexport function persistThemeBootCache(mode: AXPThemeMode, palette: string): void {\n try {\n localStorage.setItem(AXP_THEME_BOOT_MODE_KEY, mode);\n const name = palette.trim();\n if (name.length > 0) {\n localStorage.setItem(AXP_THEME_BOOT_PALETTE_KEY, name);\n }\n } catch {\n /* private mode / quota */\n }\n}\n\n//#endregion\n","//#region ----- Types -----\nexport type AXPFontScript = 'universal' | 'en' | 'fa' | 'ar';\n\nexport interface AXPFontStyleOption {\n id: string;\n title: string;\n cssFamily: string;\n script: AXPFontScript;\n}\n//#endregion\n\n//#region ----- Constants -----\nconst FONT_FALLBACK = 'Tahoma, system-ui, sans-serif';\n//#endregion\n\n//#region ----- Options -----\nexport const AXP_FONT_STYLE_OPTIONS: AXPFontStyleOption[] = [\n {\n id: 'system-ui',\n title: 'System Default',\n cssFamily: `system-ui, ${FONT_FALLBACK}`,\n script: 'universal',\n },\n {\n id: 'tahoma',\n title: 'Tahoma',\n cssFamily: `Tahoma, system-ui, sans-serif`,\n script: 'universal',\n },\n {\n id: 'inter',\n title: 'Inter',\n cssFamily: `inter, ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'open-sans',\n title: 'Open Sans',\n cssFamily: `\"open-sans\", ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'roboto',\n title: 'Roboto',\n cssFamily: `roboto, ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'rubik',\n title: 'Rubik',\n cssFamily: `rubik, ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'google-sans',\n title: 'Google Sans',\n cssFamily: `\"google-sans\", ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'vazirmatn',\n title: 'Vazir وزیر',\n cssFamily: `vazirmatn, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'dana',\n title: 'Dana دانا',\n cssFamily: `dana, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'iranyekanx',\n title: 'Iran Yekan X ایرانیکان',\n cssFamily: `iranyekanx, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'peyda',\n title: 'Peyda پیدا',\n cssFamily: `peyda, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'cairo',\n title: 'Cairo',\n cssFamily: `cairo, ${FONT_FALLBACK}`,\n script: 'ar',\n },\n {\n id: 'kufam',\n title: 'Kufam',\n cssFamily: `kufam, ${FONT_FALLBACK}`,\n script: 'ar',\n },\n {\n id: 'noto-kufi-arabic',\n title: 'Noto Kufi Arabic',\n cssFamily: `\"noto-kufi-arabic\", ${FONT_FALLBACK}`,\n script: 'ar',\n },\n {\n id: 'playpen-sans-arabic',\n title: 'Playpen Sans Arabic',\n cssFamily: `\"playpen-sans-arabic\", ${FONT_FALLBACK}`,\n script: 'ar',\n },\n];\n//#endregion\n\n//#region ----- Helpers -----\nexport function resolveFontCssFamily(fontId: string | null | undefined): string {\n const match = AXP_FONT_STYLE_OPTIONS.find((font) => font.id === fontId);\n return match?.cssFamily ?? fontId ?? `system-ui, ${FONT_FALLBACK}`;\n}\n\nexport function resolveFontVariationSettings(fontId: string | null | undefined): string | undefined {\n if (fontId === 'iranyekanx') {\n return '\"dots\" 1';\n }\n return undefined;\n}\n//#endregion\n","//#region ----- Imports -----\nimport {\n AXP_LOCALE_MANAGEMENT_PORT,\n AXPSettingsService,\n resolveEffectiveAvailableLanguageCodes,\n primaryLanguageSubtag,\n type AXPLocaleManagementPort,\n} from '@acorex-platform/framework-client/common';\nimport { Injector } from '@angular/core';\nimport {\n AXP_FONT_STYLE_OPTIONS,\n type AXPFontStyleOption,\n} from './font-style-options';\n//#endregion\n\n//#region ----- Types -----\nexport interface AXPRegionalFontScriptContext {\n showEnglishFonts: boolean;\n showPersianFonts: boolean;\n showArabicFonts: boolean;\n}\n//#endregion\n\n//#region ----- Regional context -----\nfunction resolveContextFromLocaleCodes(codes: string[]): AXPRegionalFontScriptContext {\n if (codes.length === 0) {\n return { showEnglishFonts: true, showPersianFonts: false, showArabicFonts: false };\n }\n\n let showEnglishFonts = false;\n let showPersianFonts = false;\n let showArabicFonts = false;\n\n for (const code of codes) {\n const language = primaryLanguageSubtag(code);\n if (language === 'fa' || language === 'ar') {\n showPersianFonts = true;\n showArabicFonts = true;\n } else {\n showEnglishFonts = true;\n }\n }\n\n return { showEnglishFonts, showPersianFonts, showArabicFonts };\n}\n\nfunction resolveContextFromProfiles(profiles: Array<{ code?: string }>): AXPRegionalFontScriptContext {\n const codes = profiles.map((profile) => profile.code).filter((code): code is string => !!code);\n return resolveContextFromLocaleCodes(codes);\n}\n\nasync function resolveContextFromAvailableLanguages(\n settingsService: AXPSettingsService,\n localePort?: AXPLocaleManagementPort | null,\n): Promise<AXPRegionalFontScriptContext | null> {\n const allowed = await resolveEffectiveAvailableLanguageCodes(settingsService);\n if (allowed.length === 0) {\n return null;\n }\n\n if (localePort) {\n try {\n const profiles = await localePort.getAvailableLocaleProfiles();\n const profileCodes = profiles.map((profile) => profile.code).filter(Boolean);\n if (profileCodes.length > 0) {\n const allowSet = new Set(allowed);\n const intersected = profileCodes.filter((code) => allowSet.has(code));\n if (intersected.length > 0) {\n return resolveContextFromLocaleCodes(intersected);\n }\n }\n } catch {\n // use allowed codes only\n }\n }\n\n return resolveContextFromLocaleCodes(allowed);\n}\n\nexport async function resolveRegionalFontScriptContext(\n settingsService: AXPSettingsService,\n localePort?: AXPLocaleManagementPort | null,\n): Promise<AXPRegionalFontScriptContext> {\n const fromLanguages = await resolveContextFromAvailableLanguages(settingsService, localePort);\n if (fromLanguages) {\n return fromLanguages;\n }\n\n if (localePort) {\n try {\n const profiles = await localePort.getAvailableLocaleProfiles();\n if (profiles.length > 0) {\n return resolveContextFromProfiles(profiles);\n }\n } catch {\n // fall through to default\n }\n }\n\n return { showEnglishFonts: true, showPersianFonts: false, showArabicFonts: false };\n}\n\nexport async function resolveRegionalFontScriptContextFromInjector(\n injector: Injector,\n): Promise<AXPRegionalFontScriptContext> {\n const settingsService = injector.get(AXPSettingsService);\n const localePort = injector.get(AXP_LOCALE_MANAGEMENT_PORT, null, { optional: true });\n return resolveRegionalFontScriptContext(settingsService, localePort);\n}\n//#endregion\n\n//#region ----- Filtering -----\nexport function filterFontsForRegionalContext(\n options: AXPFontStyleOption[],\n context: AXPRegionalFontScriptContext,\n): AXPFontStyleOption[] {\n return options.filter((font) => {\n switch (font.script) {\n case 'universal':\n return true;\n case 'en':\n return context.showEnglishFonts;\n case 'fa':\n return context.showPersianFonts;\n case 'ar':\n return context.showArabicFonts;\n default:\n return false;\n }\n });\n}\n\nexport function resolveRegionalFontOptions(context: AXPRegionalFontScriptContext): AXPFontStyleOption[] {\n return filterFontsForRegionalContext(AXP_FONT_STYLE_OPTIONS, context);\n}\n\nexport function resolveRegionalDefaultFontId(\n availableFonts: AXPFontStyleOption[],\n languageCode?: string | null,\n): string {\n const language = languageCode ? primaryLanguageSubtag(languageCode) : null;\n\n if (language === 'fa') {\n const iranYekan = availableFonts.find((font) => font.id === 'iranyekanx');\n if (iranYekan) {\n return iranYekan.id;\n }\n }\n\n return availableFonts[0]?.id ?? 'system-ui';\n}\n\nexport function resolveEffectiveFontId(\n fontId: string | null | undefined,\n availableFonts: AXPFontStyleOption[],\n languageCode?: string | null,\n): string {\n const fallback = resolveRegionalDefaultFontId(availableFonts, languageCode);\n\n if (!fontId) {\n return fallback;\n }\n\n if (fontId === 'system-ui' && languageCode && primaryLanguageSubtag(languageCode) === 'fa') {\n return fallback;\n }\n\n return availableFonts.some((font) => font.id === fontId) ? fontId : fallback;\n}\n//#endregion\n","//#region ----- Types -----\n/** font id → @font-face stylesheet href (app assets). Universal fonts omit an entry. */\nexport type AXPRegionalFontStylesheetMap = Readonly<Record<string, string>>;\n//#endregion\n\n//#region ----- Config -----\nlet regionalFontStylesheets: AXPRegionalFontStylesheetMap = {};\n\n/** App-level font-face stylesheets keyed by font-style-chooser id (demo assets). */\nexport function configureRegionalFontStylesheets(map: AXPRegionalFontStylesheetMap): void {\n regionalFontStylesheets = { ...map };\n}\n\nexport function getRegionalFontStylesheet(fontId: string): string | undefined {\n return regionalFontStylesheets[fontId];\n}\n//#endregion\n","//#region ----- Imports -----\nimport { Injectable } from '@angular/core';\nimport { getRegionalFontStylesheet } from './regional-font-styles.config';\n//#endregion\n\n//#region ----- Service -----\n@Injectable({ providedIn: 'root' })\nexport class AXPRegionalFontStyleLoaderService {\n //#region ----- State -----\n private readonly loadedStylesheets = new Set<string>();\n //#endregion\n\n //#region ----- Public API -----\n /** Loads @font-face stylesheets for the given font ids (skips ids with no configured href). */\n ensureFontStylesLoaded(fontIds: string | readonly string[]): void {\n const ids = typeof fontIds === 'string' ? [fontIds] : fontIds;\n for (const fontId of ids) {\n const href = getRegionalFontStylesheet(fontId);\n if (href) {\n this.ensureStylesheet(href);\n }\n }\n }\n //#endregion\n\n //#region ----- Private helpers -----\n private ensureStylesheet(href: string): void {\n if (!href || this.loadedStylesheets.has(href)) {\n return;\n }\n\n const selector = `link[data-axp-regional-font=\"${href}\"]`;\n if (document.head.querySelector(selector)) {\n this.loadedStylesheets.add(href);\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-axp-regional-font', href);\n document.head.appendChild(link);\n this.loadedStylesheets.add(href);\n }\n //#endregion\n}\n//#endregion\n","import { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope, AXPRegionalSetting, coerceUnknownToBoolean } from '@acorex-platform/framework-shared/core';\nimport { AXPDebugService, AXPDeviceService, AXPScreenSize, OVERLAY_LAYOUT_TRACE_NS } from '@acorex-platform/framework-client/core';\nimport { HttpClient } from '@angular/common/http';\nimport { computed, effect, inject, Injector } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { filter, firstValueFrom, timeout, timer } from 'rxjs';\nimport { AXPThemeLayoutSetting } from './contracts/settings.keys';\nimport {\n coerceThemeMode,\n persistThemeBootCache,\n readBootThemeMode,\n readBootThemePalette,\n} from './contracts/theme-boot.util';\nimport {\n AXP_SIDE_MENU_COMPACT_WIDTH,\n AXP_SIDE_MENU_FULL_DEFAULT_WIDTH,\n AXPMenuAppearance,\n AXPHeaderAppearance,\n AXPMenuOrientation,\n AXPMenuVerticalMode,\n AXPSideMenuState,\n AXPThemeMode,\n normalizeHeaderAppearance,\n normalizeMenuAppearance,\n normalizeSideMenuState,\n} from './contracts/theme.types';\nimport { resolveFontCssFamily, resolveFontVariationSettings } from './widgets/font-style-chooser/font-style-options';\nimport {\n resolveEffectiveFontId,\n resolveRegionalFontOptions,\n resolveRegionalFontScriptContextFromInjector,\n} from './widgets/font-style-chooser/font-style-regional.util';\nimport { AXPRegionalFontStyleLoaderService } from './widgets/font-style-chooser/regional-font-style-loader.service';\n\nfunction normalizeMenuVerticalMode(value: unknown, fallback: AXPMenuVerticalMode): AXPMenuVerticalMode {\n if (value === AXPMenuVerticalMode.Compact || value === AXPMenuVerticalMode.Full) {\n return value;\n }\n if (typeof value === 'object' && value !== null && 'id' in value) {\n const id = (value as { id: string }).id;\n if (id === AXPMenuVerticalMode.Compact || id === AXPMenuVerticalMode.Full) {\n return id as AXPMenuVerticalMode;\n }\n }\n return fallback;\n}\n// ThemeStore - Manages theme settings, system changes, and loading states\nexport const AXPLayoutThemeService = signalStore(\n { providedIn: 'root' },\n\n // Initial State\n withState(() => {\n const isSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n // Helper function to get the initial screen size for side menu initialization\n const getInitialScreenSize = (): AXPScreenSize => {\n const width = window.innerWidth;\n if (width <= 600) return AXPScreenSize.Small;\n if (width <= 1024) return AXPScreenSize.Medium;\n return AXPScreenSize.Large;\n };\n\n const state = {\n currentMode: readBootThemeMode(),\n currentPalette: readBootThemePalette(),\n systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light) as AXPThemeMode,\n font: {\n family: 'system-ui',\n size: 'medium',\n },\n overlayLoading: false,\n navigationLoading: false,\n overlayLoadingTaskCount: 0,\n navigationLoadingTaskCount: 0,\n sideMenuState: (getInitialScreenSize() === AXPScreenSize.Large\n ? AXPSideMenuState.Opened\n : AXPSideMenuState.Closed) as AXPSideMenuState,\n /** Ephemeral overlay drawer state on small/medium viewports; never persisted. */\n overlaySideMenuOpen: false,\n sideMenuWidth: AXP_SIDE_MENU_FULL_DEFAULT_WIDTH,\n sideMenuCompactWidth: AXP_SIDE_MENU_COMPACT_WIDTH,\n menuVerticalMode: AXPMenuVerticalMode.Full,\n menuToggleCyclesStyle: false,\n menuOrientation: 'vertical' as AXPMenuOrientation,\n menuAppearance: 'light' as AXPMenuAppearance,\n headerAppearance: 'brand' as AXPHeaderAppearance,\n mainFooterFullWidth: false,\n _listener: null as ((e: MediaQueryListEvent) => void) | null,\n isPrinting: false,\n };\n\n return state;\n }),\n\n // Computed Signals\n withComputed(\n (\n {\n currentMode: currentTheme,\n systemThemeMode: systemTheme,\n sideMenuState,\n overlaySideMenuOpen,\n overlayLoading,\n navigationLoading,\n overlayLoadingTaskCount,\n menuOrientation,\n menuVerticalMode,\n menuAppearance,\n headerAppearance,\n mainFooterFullWidth,\n sideMenuWidth,\n sideMenuCompactWidth,\n isPrinting,\n menuToggleCyclesStyle,\n },\n deviceService = inject(AXPDeviceService),\n ) => {\n const effectiveMenuVerticalMode = computed(() => {\n if (!deviceService.isLarge()) {\n return AXPMenuVerticalMode.Full;\n }\n return normalizeMenuVerticalMode(menuVerticalMode(), AXPMenuVerticalMode.Full);\n });\n\n return {\n isDarkMode: computed(() => {\n if (isPrinting()) {\n return false;\n }\n return (\n currentTheme() === AXPThemeMode.Dark ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Dark)\n );\n }),\n isLightMode: computed(\n () =>\n currentTheme() === AXPThemeMode.Light ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Light),\n ),\n isSystemMode: computed(() => currentTheme() === AXPThemeMode.System),\n isSideMenuOpen: computed(() =>\n deviceService.isLarge()\n ? sideMenuState() === AXPSideMenuState.Opened\n : overlaySideMenuOpen(),\n ),\n isOverlayLoading: computed(() => overlayLoading()),\n overlayTaskCount: computed(() => overlayLoadingTaskCount()),\n isNavigationLoading: computed(() => navigationLoading()),\n isMenuHorizontal: computed(() => menuOrientation() === AXPMenuOrientation.Horizontal),\n menuToggleCyclesStyleEnabled: computed(() => coerceUnknownToBoolean(menuToggleCyclesStyle())),\n effectiveMenuVerticalMode,\n sideMenuDrawerWidth: computed(() =>\n effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact ? sideMenuCompactWidth() : sideMenuWidth(),\n ),\n menuDarkEnabled: computed(() => {\n const appearance = menuAppearance();\n return appearance === 'dark' || appearance === 'brand-dark';\n }),\n menuBrandEnabled: computed(() => {\n const appearance = menuAppearance();\n return appearance === 'brand-light' || appearance === 'brand-dark';\n }),\n /** Full-width footer applies only to vertical layout. */\n effectiveMainFooterFullWidth: computed(\n () =>\n menuOrientation() !== AXPMenuOrientation.Horizontal && mainFooterFullWidth(),\n ),\n headerBrandEnabled: computed(() => headerAppearance() === 'brand'),\n headerButtonColor: computed(() =>\n headerAppearance() === 'simple' ? ('default' as const) : ('primary' as const),\n ),\n headerButtonLook: computed(() =>\n headerAppearance() === 'simple' ? ('blank' as const) : ('default' as const),\n ),\n };\n },\n ),\n\n // Methods for State Management\n withMethods(\n (store, http = inject(HttpClient), settingsService = inject(AXPSettingsService), deviceService = inject(AXPDeviceService), injector = inject(Injector)) => {\n const _applySettings = async () => {\n // Initialize theme and side menu setting from storage\n const settingThemeMode = coerceThemeMode(\n await settingsService.get(AXPThemeLayoutSetting.Mode),\n AXPThemeMode.Light,\n );\n patchState(store, { currentMode: settingThemeMode });\n const settingThemePaletteRaw = await settingsService.get(AXPThemeLayoutSetting.Palette);\n const settingThemePallete =\n typeof settingThemePaletteRaw === 'string' && settingThemePaletteRaw.trim().length > 0\n ? settingThemePaletteRaw.trim()\n : 'default';\n patchState(store, { currentPalette: settingThemePallete });\n //\n const settingSideMenu = normalizeSideMenuState(\n await settingsService.get(AXPThemeLayoutSetting.SideMenuStatus),\n store.sideMenuState(),\n );\n patchState(store, { sideMenuState: settingSideMenu });\n //\n const settingMenuOrientation =\n ((await settingsService.get(AXPThemeLayoutSetting.MenuOrientation)) as AXPMenuOrientation) ??\n store.menuOrientation();\n patchState(store, { menuOrientation: settingMenuOrientation });\n //\n const settingMenuVerticalMode = normalizeMenuVerticalMode(\n await settingsService.get(AXPThemeLayoutSetting.MenuVerticalMode),\n store.menuVerticalMode(),\n );\n patchState(store, { menuVerticalMode: settingMenuVerticalMode });\n //\n let menuToggleCyclesStyle = false;\n try {\n menuToggleCyclesStyle = coerceUnknownToBoolean(\n await settingsService.get(AXPThemeLayoutSetting.MenuToggleCyclesStyle),\n );\n } catch {\n menuToggleCyclesStyle = false;\n }\n patchState(store, { menuToggleCyclesStyle });\n //\n let rawMenuAppearance: unknown;\n try {\n rawMenuAppearance = await settingsService.get<unknown>(AXPThemeLayoutSetting.MenuDark);\n } catch {\n rawMenuAppearance = undefined;\n }\n patchState(store, {\n menuAppearance: normalizeMenuAppearance(rawMenuAppearance, 'brand-dark'),\n });\n\n let rawHeaderAppearance: unknown;\n try {\n rawHeaderAppearance = await settingsService.get<unknown>(\n AXPThemeLayoutSetting.HeaderAppearance,\n );\n } catch {\n rawHeaderAppearance = undefined;\n }\n patchState(store, {\n headerAppearance: normalizeHeaderAppearance(rawHeaderAppearance, 'simple'),\n });\n\n let mainFooterFullWidth = false;\n try {\n mainFooterFullWidth =\n (await settingsService.get<boolean>(AXPThemeLayoutSetting.MenuFooterFullWidth)) ?? false;\n } catch {\n mainFooterFullWidth = false;\n }\n patchState(store, { mainFooterFullWidth });\n //\n const fontFamily = await settingsService.get(AXPThemeLayoutSetting.Font);\n const fontSize = await settingsService.get(AXPThemeLayoutSetting.FontSize);\n const language = (await settingsService.get(AXPRegionalSetting.Language)) as string | undefined;\n\n const regionalContext = await resolveRegionalFontScriptContextFromInjector(injector);\n const availableFonts = resolveRegionalFontOptions(regionalContext);\n const effectiveFontFamily = resolveEffectiveFontId(\n fontFamily as string | undefined,\n availableFonts,\n language,\n );\n await injector.get(AXPRegionalFontStyleLoaderService).ensureFontStylesLoaded(effectiveFontFamily);\n\n patchState(store, { font: { family: effectiveFontFamily, size: fontSize } });\n //\n const sideMenuWidth =\n (await settingsService.get<number>(AXPThemeLayoutSetting.SideMenuWidth)) ?? store.sideMenuWidth();\n patchState(store, { sideMenuWidth });\n //\n const sideMenuCompactWidth =\n (await settingsService.get<number>(AXPThemeLayoutSetting.SideMenuCompactWidth)) ??\n store.sideMenuCompactWidth();\n patchState(store, { sideMenuCompactWidth });\n\n await _updateHtmlClass();\n };\n\n // Update HTML class based on theme\n const _updateHtmlClass = async () => {\n const html = document.getElementsByTagName('html')[0];\n //\n const isDark = store.isDarkMode();\n html.classList.toggle('ax-dark', isDark);\n html.style.colorScheme = isDark ? 'dark' : 'light';\n persistThemeBootCache(store.currentMode(), store.currentPalette());\n //\n html.style.fontFamily = resolveFontCssFamily(store.font().family);\n const fontVariation = resolveFontVariationSettings(store.font().family);\n html.style.fontVariationSettings = fontVariation ?? '';\n html.style.fontSize = store.font().size;\n //\n await _applyThemePalette(store.currentPalette());\n };\n\n const _setOverlayLoading = async (value: boolean, delay: number = 0): Promise<void> => {\n if (value) {\n let timeoutId: number | null = null;\n\n if (delay > 0) {\n timeoutId = window.setTimeout(() => {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() + 1 });\n patchState(store, { overlayLoading: true });\n }, delay);\n } else {\n const prevCount = store.overlayLoadingTaskCount();\n patchState(store, { overlayLoadingTaskCount: prevCount + 1 });\n patchState(store, { overlayLoading: true });\n if (prevCount === 0) {\n AXPDebugService.instance?.trace(OVERLAY_LAYOUT_TRACE_NS, 'theme', 'overlay ON', () => ({\n taskCount: prevCount + 1,\n overlayLoading: true,\n note: 'First overlay loading task started',\n }));\n }\n }\n\n // Store timeout ID to clear it if the loading ends before delay\n (store as any)._loadingTimeoutId = timeoutId;\n } else {\n if (store.overlayLoadingTaskCount() > 0) {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() - 1 });\n }\n\n if (store.overlayLoadingTaskCount() === 0) {\n const timeoutId = (store as any)._loadingTimeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n (store as any)._loadingTimeoutId = null;\n }\n\n timer(minimumDisplayTime).subscribe(() => {\n if (store.overlayLoadingTaskCount() === 0) {\n patchState(store, { overlayLoading: false });\n }\n });\n }\n }\n };\n\n const _clearOverlayLoading = () => {\n const prevCount = store.overlayLoadingTaskCount();\n const timeoutId = (store as any)._loadingTimeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n (store as any)._loadingTimeoutId = null;\n }\n\n patchState(store, { overlayLoadingTaskCount: 0, overlayLoading: false });\n\n AXPDebugService.instance?.trace(OVERLAY_LAYOUT_TRACE_NS, 'theme', 'overlay CLEARED (force)', () => ({\n prevTaskCount: prevCount,\n taskCount: 0,\n note: 'Overlay loading force-cleared',\n }));\n };\n\n const _setNavigationLoading = (value: boolean, delay?: number) => {\n if (value) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() + 1 });\n patchState(store, { navigationLoading: true });\n } else {\n if (store.navigationLoadingTaskCount() > 0) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() - 1 });\n }\n if (store.navigationLoadingTaskCount() === 0) {\n timer(minimumDisplayTime).subscribe(() => {\n if (store.navigationLoadingTaskCount() === 0) {\n patchState(store, { navigationLoading: false });\n }\n });\n }\n }\n };\n\n // Helper method to apply a cached theme palette\n const _applyThemePalette = async (name: string): Promise<void> => {\n // TODO: Get the path from the palette provider token\n const path = `/assets/themes/palettes/css/${name}.css`;\n // Check if the current theme is already applied\n const existingStyle = document.querySelector<HTMLStyleElement>(`style[data-theme=\"${name}\"]`);\n if (existingStyle) {\n return; // Theme is already applied, no need to reapply\n }\n\n _setNavigationLoading(true);\n\n try {\n // Fetch the CSS file via HttpClient\n const cssText = await firstValueFrom(\n http.get(path!, { responseType: 'text' }).pipe(timeout({ first: 5_000 })),\n );\n\n // Create a new <style> tag and apply the CSS\n const style = document.createElement('style');\n style.setAttribute('data-theme', name);\n style.textContent = cssText!;\n document.head.appendChild(style);\n\n // Remove any other outdated theme styles\n document.querySelectorAll<HTMLStyleElement>('style[data-theme]').forEach((existing) => {\n if (existing !== style) {\n existing.remove();\n }\n });\n } catch (error) {\n console.error(`Error loading theme CSS:`, error);\n } finally {\n _setNavigationLoading(false);\n }\n };\n\n const minimumDisplayTime = 500; // milliseconds\n\n const setSideMenuOpen = (opened: boolean) => {\n if (!deviceService.isLarge()) {\n patchState(store, { overlaySideMenuOpen: opened });\n return;\n }\n const sideMenuState = opened ? AXPSideMenuState.Opened : AXPSideMenuState.Closed;\n patchState(store, { sideMenuState });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, sideMenuState);\n };\n\n const setMenuVerticalMode = (mode: AXPMenuVerticalMode) => {\n const next = normalizeMenuVerticalMode(mode, store.menuVerticalMode());\n patchState(store, { menuVerticalMode: next });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.MenuVerticalMode, next);\n };\n\n return {\n // Change theme and update HTML class\n changeThemeMode(theme: AXPThemeMode) {\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.Mode, theme);\n patchState(store, { currentMode: theme });\n _updateHtmlClass();\n },\n\n // Open side menu\n openSideMenu() {\n setSideMenuOpen(true);\n },\n\n // Close side menu\n closeSideMenu() {\n setSideMenuOpen(false);\n },\n\n // Set side menu width in full vertical mode\n setSideMenuWidth(width: number) {\n patchState(store, { sideMenuWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);\n },\n\n // Set side menu width in compact vertical mode\n setSideMenuCompactWidth(width: number) {\n patchState(store, { sideMenuCompactWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuCompactWidth, width);\n },\n\n // Persist drawer width for the active vertical menu mode\n setSideMenuDrawerWidth(width: number) {\n if (\n normalizeMenuVerticalMode(store.menuVerticalMode(), AXPMenuVerticalMode.Full) === AXPMenuVerticalMode.Compact\n ) {\n patchState(store, { sideMenuCompactWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuCompactWidth, width);\n } else {\n patchState(store, { sideMenuWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);\n }\n },\n\n // Persist vertical rail mode (full labels vs compact icons)\n setMenuVerticalMode,\n\n // Large screens with the setting on: cycle full ↔ compact without hiding.\n // Otherwise: hide/show the drawer (overlay on smaller screens).\n toggleSideMenu() {\n if (!deviceService.isLarge()) {\n setSideMenuOpen(!store.isSideMenuOpen());\n return;\n }\n if (store.menuToggleCyclesStyleEnabled()) {\n if (!store.isSideMenuOpen()) {\n setSideMenuOpen(true);\n return;\n }\n const current = normalizeMenuVerticalMode(\n store.menuVerticalMode(),\n AXPMenuVerticalMode.Full,\n );\n setMenuVerticalMode(\n current === AXPMenuVerticalMode.Compact\n ? AXPMenuVerticalMode.Full\n : AXPMenuVerticalMode.Compact,\n );\n return;\n }\n setSideMenuOpen(!store.isSideMenuOpen());\n },\n\n // Set navigation loading state with a task counter\n setNavigationLoading(value: boolean, delay?: number) {\n _setNavigationLoading(value, delay);\n },\n\n // Set overlay loading state with a task counter\n setOverlayLoading(value: boolean, delay?: number) {\n _setOverlayLoading(value, delay);\n },\n\n /** Resets overlay task count and hides overlay (page-ready / destroy). */\n clearOverlayLoading() {\n _clearOverlayLoading();\n },\n\n async loadSettings() {\n await _applySettings();\n },\n // This is for internal use to react to print mode changes\n _internal_updateHtmlClass: _updateHtmlClass,\n\n // Set up event listener for system theme changes\n _setupSystemColorListener() {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n const listener = (e: MediaQueryListEvent) => {\n patchState(store, { systemThemeMode: e.matches ? AXPThemeMode.Dark : AXPThemeMode.Light });\n _updateHtmlClass();\n };\n mediaQueryList.addEventListener('change', listener);\n return listener;\n },\n\n // Remove event listener for system theme changes\n _removeSystemColorListener(listener: (e: MediaQueryListEvent) => void) {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQueryList.removeEventListener('change', listener);\n },\n };\n }),\n\n // Lifecycle Hooks\n withHooks((store, settingsService = inject(AXPSettingsService), deviceService = inject(AXPDeviceService)) => ({\n onInit() {\n void store['_internal_updateHtmlClass']();\n\n effect(() => {\n if (!deviceService.isLarge()) {\n patchState(store, { overlaySideMenuOpen: false });\n }\n });\n\n settingsService.onChanged\n .pipe(\n filter((c) =>\n [AXPPlatformScope.Platform, AXPPlatformScope.Tenant, AXPPlatformScope.User].includes(c.scope),\n ),\n )\n .subscribe(async (changes) => {\n const keys = Object.values(AXPThemeLayoutSetting);\n const layoutKeysChanged = changes.keys.some((key) => keys.includes(key as AXPThemeLayoutSetting));\n const languageChanged = changes.keys.includes(AXPRegionalSetting.Language);\n\n if (!layoutKeysChanged && !languageChanged) {\n return;\n }\n\n if (languageChanged) {\n await store['loadSettings']();\n return;\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuVerticalMode)) {\n patchState(store, {\n menuVerticalMode: normalizeMenuVerticalMode(\n changes.values[AXPThemeLayoutSetting.MenuVerticalMode],\n store.menuVerticalMode(),\n ),\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuToggleCyclesStyle)) {\n patchState(store, {\n menuToggleCyclesStyle: coerceUnknownToBoolean(\n changes.values[AXPThemeLayoutSetting.MenuToggleCyclesStyle],\n ),\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuDark)) {\n const rawMenuAppearance = changes.values[AXPThemeLayoutSetting.MenuDark] as unknown;\n patchState(store, {\n menuAppearance: normalizeMenuAppearance(rawMenuAppearance, store.menuAppearance()),\n });\n }\n\n if (changes.keys.includes(AXPThemeLayoutSetting.HeaderAppearance)) {\n const rawHeaderAppearance = changes.values[\n AXPThemeLayoutSetting.HeaderAppearance\n ] as unknown;\n patchState(store, {\n headerAppearance: normalizeHeaderAppearance(\n rawHeaderAppearance,\n store.headerAppearance(),\n ),\n });\n }\n\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuFooterFullWidth)) {\n patchState(store, {\n mainFooterFullWidth: changes.values[AXPThemeLayoutSetting.MenuFooterFullWidth] ?? false,\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.SideMenuStatus)) {\n patchState(store, {\n sideMenuState: normalizeSideMenuState(\n changes.values[AXPThemeLayoutSetting.SideMenuStatus],\n store.sideMenuState(),\n ),\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.SideMenuWidth)) {\n const width = changes.values[AXPThemeLayoutSetting.SideMenuWidth];\n if (typeof width === 'number' && Number.isFinite(width)) {\n patchState(store, { sideMenuWidth: width });\n }\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.SideMenuCompactWidth)) {\n const width = changes.values[AXPThemeLayoutSetting.SideMenuCompactWidth];\n if (typeof width === 'number' && Number.isFinite(width)) {\n patchState(store, { sideMenuCompactWidth: width });\n }\n }\n const shouldReloadSettings = changes.keys.some(\n (key) =>\n keys.includes(key as AXPThemeLayoutSetting) &&\n key !== AXPThemeLayoutSetting.MenuVerticalMode &&\n key !== AXPThemeLayoutSetting.MenuToggleCyclesStyle &&\n key !== AXPThemeLayoutSetting.MenuDark &&\n key !== AXPThemeLayoutSetting.HeaderAppearance &&\n key !== AXPThemeLayoutSetting.MenuFooterFullWidth &&\n key !== AXPThemeLayoutSetting.SideMenuStatus &&\n key !== AXPThemeLayoutSetting.SideMenuWidth &&\n key !== AXPThemeLayoutSetting.SideMenuCompactWidth,\n );\n if (shouldReloadSettings) {\n await store['loadSettings']();\n }\n });\n //\n settingsService.onLoaded.subscribe(async () => {\n await store['loadSettings']();\n });\n\n // Set up event listener for system theme changes\n const listener = store['_setupSystemColorListener']();\n patchState(store, { _listener: listener });\n\n window.addEventListener('beforeprint', () => {\n patchState(store, { isPrinting: true });\n (store as any)._internal_updateHtmlClass();\n });\n window.addEventListener('afterprint', () => {\n patchState(store, { isPrinting: false });\n (store as any)._internal_updateHtmlClass();\n });\n },\n\n onDestroy() {\n // Clean up event listeners when store is destroyed\n const { _listener: listener } = store;\n if (listener) {\n store['_removeSystemColorListener'](listener);\n }\n },\n })),\n);","import { AXPDeviceService } from '@acorex-platform/framework-client/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPLayoutThemeService } from '../theme.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeMode } from '../contracts/theme.types';\n\n@Component({\n template: `\n @if (!deviceService.isSmall()) {\n <ax-button [iconOnly]=\"true\" [color]=\"store.headerButtonColor()\" [look]=\"store.headerButtonLook()\">\n <ax-icon>\n <i\n class=\"fa-regular\"\n [ngClass]=\"{\n 'fa-desktop': store.isSystemMode(),\n 'fa-moon': !store.isSystemMode() && store.isDarkMode(),\n 'fa-brightness': !store.isSystemMode() && !store.isDarkMode(),\n }\"\n ></i>\n </ax-icon>\n <ax-dropdown-panel *translate=\"let t\">\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Light)\"\n [text]=\"('@layout:terms.theme-modes.light' | translate | async)!\"\n [selected]=\"!store.isSystemMode() && !store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-brightness\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Dark)\"\n [text]=\"('@layout:terms.theme-modes.dark' | translate | async)!\"\n [selected]=\"!store.isSystemMode() && store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-moon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.System)\"\n [text]=\"('@layout:terms.theme-modes.system' | translate | async)!\"\n [selected]=\"store.isSystemMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-desktop\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n `,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXTranslationModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPThemeSlotComponent {\n protected store = inject(AXPLayoutThemeService);\n protected readonly deviceService = inject(AXPDeviceService);\n\n protected variants = AXPThemeMode;\n}\n","import { InjectionToken } from '@angular/core';\nimport { AXPThemePalette } from './contracts/theme.types';\n\nexport interface AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]>;\n}\n\nexport const AXP_THEME_PALETTE_PROVIDER = new InjectionToken<Promise<AXPThemePaletteProvider>>('AXP_THEME_PALETTE_PROVIDER', {\n providedIn: 'root',\n factory: async () => {\n return new AXPThemePaletteProviderDefault();\n },\n});\n\nexport class AXPThemePaletteProviderDefault implements AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]> {\n return Promise.resolve([\n {\n name: 'default',\n title: 'Default',\n path: '/assets/themes/palletes/default.css',\n colors: {\n primary: '#113b53',\n secondary: '#1a6ab1',\n neutral: '#606c76',\n success: '#2d9c67',\n warning: '#e9a01b',\n danger: '#c02f1d',\n accents: ['#d6a7a6', '#a0897e', '#8bf4d9'],\n dark: '#2a2d30',\n light: '#ffffff',\n },\n },\n\n ]);\n }\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './settings.keys';\nexport * from './theme.types';\nexport * from './theme-boot.util';\n\n//#endregion\n","import { InjectionToken } from '@angular/core';\nimport { AXPIconProvider, AXPIconStyleProvider } from './icon-chooser.service';\n\n//#region ---- Injection Tokens ----\n\n/**\n * Injection token for icon providers.\n * Use multi: true to register multiple providers.\n */\nexport const AXP_ICON_PROVIDER = new InjectionToken<AXPIconProvider[]>('AXP_ICON_PROVIDER');\n\n/**\n * Injection token for icon style providers.\n * Use multi: true to register multiple providers.\n */\nexport const AXP_ICON_STYLE_PROVIDER = new InjectionToken<AXPIconStyleProvider[]>('AXP_ICON_STYLE_PROVIDER');\n\n//#endregion\n\n","import { inject, Injectable } from '@angular/core';\nimport { AXP_ICON_PROVIDER, AXP_ICON_STYLE_PROVIDER } from './icon-chooser.token';\n\n//#region ---- Interfaces ----\n\nexport interface AXPFontAwesomeIcon {\n name: string;\n label: string;\n tags?: string[];\n supportedStyle?: string[];\n}\n\nexport interface AXPFontAwesomeIconStyle {\n name: string;\n label: string;\n}\n\nexport interface AXPFontAwesomeIconData {\n label?: string;\n styleClass: string;\n iconClass: string;\n}\n\n//#endregion\n\n//#region ---- Abstract Providers ----\n\nexport abstract class AXPIconProvider {\n abstract provide(): Promise<AXPFontAwesomeIcon[]>;\n}\n\nexport abstract class AXPIconStyleProvider {\n abstract provide(): Promise<AXPFontAwesomeIconStyle[]>;\n}\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXPIconChooserService {\n\n //#region ---- Properties ----\n\n private iconProviders = inject(AXP_ICON_PROVIDER, { optional: true }) ?? [];\n private styleProviders = inject(AXP_ICON_STYLE_PROVIDER, { optional: true }) ?? [];\n\n private iconsCache: AXPFontAwesomeIcon[] | null = null;\n private stylesCache: AXPFontAwesomeIconStyle[] | null = null;\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Get all available icon styles from registered providers.\n * Results are cached after first call.\n */\n async getStyles(): Promise<AXPFontAwesomeIconStyle[]> {\n if (this.stylesCache) {\n return this.stylesCache;\n }\n\n const allStyles: AXPFontAwesomeIconStyle[] = [];\n\n for (const provider of this.styleProviders) {\n const result = await provider.provide();\n allStyles.push(...result);\n }\n\n // Remove duplicates based on style name\n const uniqueStyles = allStyles.filter(\n (style, index, self) => index === self.findIndex((s) => s.name === style.name),\n );\n\n this.stylesCache = uniqueStyles;\n return uniqueStyles;\n }\n\n /**\n * Get all available icons from registered providers.\n * Icons from multiple providers are merged, with duplicates removed.\n * Results are cached after first call.\n */\n async getIcons(): Promise<AXPFontAwesomeIcon[]> {\n if (this.iconsCache) {\n return this.iconsCache;\n }\n\n const allIcons: AXPFontAwesomeIcon[] = [];\n\n for (const provider of this.iconProviders) {\n const result = await provider.provide();\n allIcons.push(...result);\n }\n\n // Remove duplicates based on icon name, keeping first occurrence\n const uniqueIcons = allIcons.filter((icon, index, self) => index === self.findIndex((i) => i.name === icon.name));\n\n this.iconsCache = uniqueIcons;\n return uniqueIcons;\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, OnInit } from '@angular/core';\nimport { AXPFontAwesomeIcon, AXPFontAwesomeIconStyle, AXPIconChooserService } from './icon-chooser.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\n@Component({\n template: `\n <div class=\"flex flex-col h-full bg-lightest\">\n <!-- Fixed Header Section -->\n <div class=\"sticky top-0 z-10 bg-lightest border-b p-4 gap-4 flex flex-col\">\n <!-- Search Bar -->\n <div class=\"flex justify-center\">\n <ax-search-box\n class=\"w-full\"\n (onValueChanged)=\"handleSearch($event)\"\n [placeholder]=\"'@general:widgets.icon-chooser.search-placeholder' | translate | async\"\n ></ax-search-box>\n </div>\n\n <!-- Controls Row -->\n <div class=\"flex justify-between items-center flex-wrap gap-2\">\n <!-- Icon Style Filter -->\n <ax-button-group selection=\"single\" look=\"outline\">\n @for (item of iconTypes; track item.name) {\n <ax-button-group-item\n [text]=\"item.label\"\n [selected]=\"item.name === selectedIconType\"\n (onClick)=\"handleIconTypeChange(item)\"\n >\n </ax-button-group-item>\n }\n </ax-button-group>\n\n <!-- View Mode Toggle -->\n <ax-button-group selection=\"single\" look=\"outline\">\n @for (item of viewModes; track item.value) {\n <ax-button-group-item\n [title]=\"item.text | translate | async\"\n [selected]=\"item.value === selectedViewMode\"\n (onClick)=\"handleViewModeChange(item)\"\n >\n <ax-icon [class]=\"item.icon\"></ax-icon>\n </ax-button-group-item>\n }\n </ax-button-group>\n </div>\n </div>\n\n <!-- Scrollable Content Area -->\n <div class=\"flex-1 overflow-y-auto p-4 pt-2\">\n <div\n class=\"grid gap-1\"\n [ngClass]=\"\n selectedViewMode === 'square'\n ? 'grid-cols-[repeat(auto-fill,minmax(6rem,1fr))]'\n : 'grid-cols-1 md:grid-cols-2'\n \"\n >\n @for (icon of filteredIcons; track icon) {\n <div\n class=\"p-4 border border-transparent rounded-lg flex items-center justify-center gap-2 cursor-pointer transition-all duration-200 ease-in-out hover:border-primary hover:shadow-md\"\n [ngClass]=\"{\n 'flex-col': selectedViewMode === 'square',\n 'flex-row justify-start': selectedViewMode === 'rectangle',\n }\"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"getIconClass(icon) + ' text-3xl'\"></i>\n <span\n class=\"text-xs w-full overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'text-center': selectedViewMode === 'square',\n 'text-left': selectedViewMode === 'rectangle',\n }\"\n >{{ icon.label }}</span\n >\n </div>\n }\n </div>\n </div>\n </div>\n `,\n imports: [AXSearchBoxModule, AXButtonGroupModule, CommonModule, AXDecoratorModule, AXTranslationModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPIconChooserPopupComponent extends AXBasePageComponent implements OnInit {\n @Input() value: string | undefined;\n\n icons: AXPFontAwesomeIcon[] = [];\n filteredIcons: AXPFontAwesomeIcon[] = [];\n searchQuery: string = '';\n viewModes = [\n { value: 'square', text: '@general:widgets.icon-chooser.view-mode.square', icon: 'fa-solid fa-border-all' },\n {\n value: 'rectangle',\n text: '@general:widgets.icon-chooser.view-mode.rectangle',\n icon: 'fa-solid fa-list',\n },\n ];\n selectedViewMode = 'square';\n iconTypes: AXPFontAwesomeIconStyle[] = [];\n selectedIconType: string = 'fa-solid';\n\n private popupService = inject(AXPIconChooserService);\n\n override async ngOnInit() {\n this.iconTypes = await this.popupService.getStyles();\n this.icons = await this.popupService.getIcons();\n this.applyFilters();\n this.cdr.detectChanges();\n }\n\n handleSearch(event: any) {\n this.searchQuery = event.value?.toLowerCase();\n this.applyFilters();\n }\n\n handleViewModeChange(mode: any) {\n this.selectedViewMode = mode.value;\n }\n\n handleIconTypeChange(type: AXPFontAwesomeIconStyle) {\n this.selectedIconType = type.name;\n this.applyFilters();\n }\n\n applyFilters() {\n let result = this.icons;\n\n if (this.searchQuery) {\n result = result.filter(\n (icon) =>\n icon.label.toLowerCase().includes(this.searchQuery) ||\n icon.tags?.some((tag) => tag.toLowerCase().includes(this.searchQuery)),\n );\n }\n\n result = result.filter((icon) => {\n if (!icon.supportedStyle || icon.supportedStyle.length === 0) {\n return true;\n }\n return icon.supportedStyle.includes(this.selectedIconType);\n });\n\n this.filteredIcons = result;\n }\n\n selectIcon(icon: AXPFontAwesomeIcon) {\n this.close({\n label: icon.label,\n styleClass: this.selectedIconType,\n iconClass: `fa-${icon.name}`,\n });\n }\n\n getIconClass(icon: AXPFontAwesomeIcon): string {\n return `${this.selectedIconType} fa-${icon.name}`;\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { AXPIconChooserPopupComponent } from './icon-chooser-popup.component';\nimport { AXPFontAwesomeIconData } from './icon-chooser.service';\n\n@Component({\n selector: 'ax-icon-chooser-edit',\n template: `\n <div\n class=\"grid grid-cols-[6rem_auto] items-center rounded-md text-3xl w-fit\"\n [class.border]=\"getValue()\"\n >\n <!-- Left: Add or Selected Icon -->\n <div\n class=\"grid place-items-center w-24 h-24\"\n [class]=\"getValue() ? 'border-e cursor-default' : 'icon-container cursor-pointer'\"\n (click)=\"addIcon()\"\n >\n <i [class]=\"getValue() ? computedValue().styleClass + ' ' + computedValue().iconClass : 'fa-solid fa-plus'\"></i>\n </div>\n\n <!-- Right: Edit & Delete (only if value exists) -->\n @if (getValue()) {\n <div class=\"flex flex-col w-16 text-2xl\">\n <div class=\"h-12 grid place-items-center cursor-pointer hover:bg-surface\" (click)=\"editIcon()\">\n <i class=\"fa-light fa-edit text-primary-400\"></i>\n </div>\n <div\n class=\"h-12 grid place-items-center cursor-pointer border-t hover:bg-surface\"\n (click)=\"deleteIcon()\"\n >\n <i class=\"fa-light fa-trash-can text-danger-400\"></i>\n </div>\n </div>\n }\n </div>\n `,\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n .icon-container {\n background-color: theme('colors.primary.300 / 10%');\n background-image: linear-gradient(\n 135deg,\n theme('colors.primary.300 / 50%') 10%,\n transparent 0,\n transparent 50%,\n theme('colors.primary.300 / 50%') 0,\n theme('colors.primary.300 / 50%') 60%,\n transparent 0,\n transparent\n );\n background-size: 7.5px 7.5px;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPIconChooserWidgetEditComponent extends AXPValueWidgetComponent<AXPFontAwesomeIconData | string> {\n private popupService = inject(AXPopupService);\n\n public computedValue = computed<AXPFontAwesomeIconData>(() => {\n const value = this.getValue();\n if (typeof value === 'string') {\n const parts = value.split(' ');\n if (parts.length === 1) {\n return { styleClass: 'fa-solid', iconClass: parts[0] };\n } else if (parts.length === 2) {\n return { styleClass: parts[0], iconClass: parts[1] };\n } else {\n throw new Error(`Invalid icon format: \"${value}\". Expected format: \"icon-class\" or \"style-class icon-class\"`);\n }\n }\n return value;\n });\n\n public async openPopup() {\n const result = await this.popupService.open(AXPIconChooserPopupComponent, {\n title: 'Choose Icon',\n size: 'md',\n data: {\n value: this.getValue(),\n },\n });\n if (result?.data) {\n this.setValue(result.data.styleClass + ' ' + result.data.iconClass);\n }\n }\n\n public addIcon() {\n if (!this.getValue()) {\n this.openPopup();\n }\n }\n public deleteIcon() {\n this.setValue(undefined);\n }\n public editIcon() {\n this.openPopup();\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPIconChooserWidget: AXPWidgetConfig = {\n name: 'icon-chooser',\n title: 'Icon Chooser',\n icon: 'fa-light fa-icons',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () => import('./icon-chooser-edit.component').then((c) => c.AXPIconChooserWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./icon-chooser-column.component').then((c) => c.AXPIconChooserWidgetColumnComponent),\n },\n view: {\n component: () => import('./icon-chooser-view.component').then((c) => c.AXPIconChooserWidgetViewComponent),\n },\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n iconChooser: 'icon-chooser';\n }\n}\n","import { AXPIconProvider, AXPIconStyleProvider, AXPFontAwesomeIcon, AXPFontAwesomeIconStyle } from './icon-chooser.service';\n\n//#region ---- Default Icon Styles ----\n\nconst DEFAULT_ICON_STYLES: AXPFontAwesomeIconStyle[] = [\n { name: 'fa-regular', label: 'Regular' },\n { name: 'fa-solid', label: 'Solid' },\n];\n\n//#endregion\n\n//#region ---- Default Icons ----\n\nconst DEFAULT_ICONS: AXPFontAwesomeIcon[] = [\n // Navigation & Actions\n { name: 'house', label: 'House', tags: ['home', 'building', 'house'] },\n { name: 'magnifying-glass', label: 'Search', tags: ['find', 'zoom'] },\n { name: 'user', label: 'User', tags: ['person', 'account'] },\n { name: 'users', label: 'Users', tags: ['people', 'group', 'team'] },\n { name: 'user-group', label: 'User Group', tags: ['team', 'group', 'people'] },\n { name: 'check', label: 'Check', tags: ['confirm', 'done', 'tick'] },\n { name: 'check-circle', label: 'Check Circle', tags: ['confirm', 'success', 'done'] },\n { name: 'check-double', label: 'Check Double', tags: ['verified', 'confirmed'] },\n { name: 'xmark', label: 'Close', tags: ['cancel', 'exit', 'remove'] },\n { name: 'circle-xmark', label: 'Circle Close', tags: ['cancel', 'error', 'remove'] },\n { name: 'plus', label: 'Add', tags: ['create', 'new', 'plus'] },\n { name: 'circle-plus', label: 'Circle Plus', tags: ['add', 'create', 'new'] },\n { name: 'minus', label: 'Remove', tags: ['delete', 'subtract', 'minus'] },\n { name: 'circle-minus', label: 'Circle Minus', tags: ['remove', 'subtract'] },\n { name: 'edit', label: 'Edit', tags: ['modify', 'change', 'pencil'] },\n { name: 'pen-to-square', label: 'Edit Square', tags: ['edit', 'modify', 'write'] },\n { name: 'trash', label: 'Delete', tags: ['remove', 'delete', 'bin'] },\n { name: 'trash-can', label: 'Trash Can', tags: ['delete', 'remove', 'garbage'] },\n { name: 'copy', label: 'Copy', tags: ['duplicate', 'clone'] },\n { name: 'clone', label: 'Clone', tags: ['duplicate', 'copy'] },\n { name: 'download', label: 'Download', tags: ['save', 'export'] },\n { name: 'upload', label: 'Upload', tags: ['import', 'send'] },\n { name: 'print', label: 'Print', tags: ['printer', 'document'] },\n { name: 'share', label: 'Share', tags: ['send', 'distribute'] },\n { name: 'share-nodes', label: 'Share Network', tags: ['share', 'distribute', 'network'] },\n { name: 'link', label: 'Link', tags: ['url', 'connection'] },\n { name: 'link-slash', label: 'Unlink', tags: ['disconnect', 'remove'] },\n { name: 'external-link', label: 'External Link', tags: ['open', 'external'] },\n { name: 'arrows-rotate', label: 'Refresh', tags: ['reload', 'sync', 'update'] },\n { name: 'rotate-right', label: 'Rotate Right', tags: ['refresh', 'reload'] },\n { name: 'arrows-left-right', label: 'Arrows Horizontal', tags: ['swap', 'exchange'] },\n { name: 'arrow-up', label: 'Arrow Up', tags: ['up', 'direction'] },\n { name: 'arrow-down', label: 'Arrow Down', tags: ['down', 'direction'] },\n { name: 'arrow-left', label: 'Arrow Left', tags: ['left', 'back', 'previous'] },\n { name: 'arrow-right', label: 'Arrow Right', tags: ['right', 'forward', 'next'] },\n { name: 'chevron-up', label: 'Chevron Up', tags: ['up', 'collapse'] },\n { name: 'chevron-down', label: 'Chevron Down', tags: ['down', 'expand'] },\n { name: 'chevron-left', label: 'Chevron Left', tags: ['left', 'previous'] },\n { name: 'chevron-right', label: 'Chevron Right', tags: ['right', 'next'] },\n { name: 'angle-up', label: 'Angle Up', tags: ['up', 'caret'] },\n { name: 'angle-down', label: 'Angle Down', tags: ['down', 'caret'] },\n { name: 'angle-left', label: 'Angle Left', tags: ['left', 'caret'] },\n { name: 'angle-right', label: 'Angle Right', tags: ['right', 'caret'] },\n { name: 'bars', label: 'Menu', tags: ['hamburger', 'menu', 'navigation'] },\n { name: 'ellipsis', label: 'Ellipsis', tags: ['more', 'options', 'menu'] },\n { name: 'ellipsis-vertical', label: 'Ellipsis Vertical', tags: ['more', 'options', 'menu'] },\n { name: 'grip', label: 'Grip', tags: ['drag', 'handle', 'move'] },\n { name: 'grip-vertical', label: 'Grip Vertical', tags: ['drag', 'handle', 'move'] },\n { name: 'filter', label: 'Filter', tags: ['sort', 'search', 'refine'] },\n { name: 'sliders', label: 'Settings', tags: ['adjust', 'options', 'preferences'] },\n\n // Media & Files\n { name: 'star', label: 'Star', tags: ['favorite', 'rate'] },\n { name: 'star-half', label: 'Star Half', tags: ['rating', 'half'] },\n { name: 'heart', label: 'Heart', tags: ['love', 'like', 'favorite'] },\n { name: 'heart-pulse', label: 'Heart Pulse', tags: ['health', 'medical', 'heartbeat'] },\n { name: 'cloud', label: 'Cloud', tags: ['weather', 'sky', 'storage'] },\n { name: 'cloud-arrow-up', label: 'Cloud Upload', tags: ['upload', 'backup', 'save'] },\n { name: 'cloud-arrow-down', label: 'Cloud Download', tags: ['download', 'restore'] },\n { name: 'envelope', label: 'Envelope', tags: ['mail', 'message', 'email'] },\n { name: 'envelope-open', label: 'Envelope Open', tags: ['mail', 'read', 'message'] },\n { name: 'paper-plane', label: 'Send', tags: ['send', 'message', 'email'] },\n { name: 'folder', label: 'Folder', tags: ['directory', 'files'] },\n { name: 'folder-open', label: 'Folder Open', tags: ['directory', 'files', 'open'] },\n { name: 'folder-plus', label: 'New Folder', tags: ['create', 'directory', 'add'] },\n { name: 'folder-tree', label: 'Folder Tree', tags: ['structure', 'hierarchy', 'files'] },\n { name: 'gear', label: 'Gear', tags: ['settings', 'options', 'config'] },\n { name: 'gears', label: 'Gears', tags: ['settings', 'configuration', 'system'] },\n { name: 'camera', label: 'Camera', tags: ['photo', 'image', 'picture'] },\n { name: 'camera-retro', label: 'Camera Retro', tags: ['photo', 'vintage'] },\n { name: 'video', label: 'Video', tags: ['film', 'movie', 'camera'] },\n { name: 'video-slash', label: 'Video Off', tags: ['disabled', 'mute', 'off'] },\n { name: 'music', label: 'Music', tags: ['sound', 'audio', 'song'] },\n { name: 'file', label: 'File', tags: ['document', 'file'] },\n { name: 'file-lines', label: 'File Text', tags: ['document', 'text'] },\n { name: 'file-pdf', label: 'PDF', tags: ['document', 'pdf'] },\n { name: 'file-word', label: 'Word Document', tags: ['document', 'word', 'doc'] },\n { name: 'file-excel', label: 'Excel', tags: ['spreadsheet', 'excel', 'xls'] },\n { name: 'file-powerpoint', label: 'PowerPoint', tags: ['presentation', 'powerpoint', 'ppt'] },\n { name: 'file-image', label: 'Image File', tags: ['picture', 'photo', 'image'] },\n { name: 'file-video', label: 'Video File', tags: ['movie', 'clip', 'video'] },\n { name: 'file-audio', label: 'Audio File', tags: ['sound', 'music', 'audio'] },\n { name: 'file-code', label: 'Code File', tags: ['code', 'programming', 'source'] },\n { name: 'file-zipper', label: 'Archive', tags: ['zip', 'compressed', 'archive'] },\n { name: 'file-csv', label: 'CSV File', tags: ['spreadsheet', 'data', 'csv'] },\n { name: 'image', label: 'Image', tags: ['picture', 'photo'] },\n { name: 'images', label: 'Images', tags: ['gallery', 'photos', 'pictures'] },\n { name: 'photo-film', label: 'Photo Film', tags: ['gallery', 'images', 'media'] },\n { name: 'microphone', label: 'Microphone', tags: ['audio', 'voice', 'record'] },\n { name: 'microphone-slash', label: 'Microphone Off', tags: ['mute', 'audio', 'off'] },\n { name: 'volume-high', label: 'Volume High', tags: ['sound', 'audio', 'loud'] },\n { name: 'volume-low', label: 'Volume Low', tags: ['sound', 'audio', 'quiet'] },\n { name: 'volume-xmark', label: 'Mute', tags: ['mute', 'silent', 'off'] },\n\n // Communication & Social\n { name: 'phone', label: 'Phone', tags: ['call', 'telephone', 'contact'] },\n { name: 'phone-flip', label: 'Phone Flip', tags: ['call', 'mobile', 'flip'] },\n { name: 'mobile', label: 'Mobile', tags: ['cell', 'smartphone', 'phone'] },\n { name: 'mobile-screen', label: 'Mobile Screen', tags: ['smartphone', 'device'] },\n { name: 'fax', label: 'Fax', tags: ['document', 'send', 'print'] },\n { name: 'comment', label: 'Comment', tags: ['message', 'chat', 'text'] },\n { name: 'comments', label: 'Comments', tags: ['messages', 'discussion', 'chat'] },\n { name: 'comment-dots', label: 'Comment Typing', tags: ['message', 'typing', 'chat'] },\n { name: 'message', label: 'Message', tags: ['chat', 'text', 'communication'] },\n { name: 'inbox', label: 'Inbox', tags: ['mail', 'messages', 'receive'] },\n { name: 'at', label: 'At Symbol', tags: ['email', 'mention', 'tag'] },\n { name: 'hashtag', label: 'Hashtag', tags: ['tag', 'social', 'topic'] },\n { name: 'thumbs-up', label: 'Like', tags: ['approve', 'good', 'positive'] },\n { name: 'thumbs-down', label: 'Dislike', tags: ['disapprove', 'bad', 'negative'] },\n { name: 'bell', label: 'Notification', tags: ['alert', 'reminder', 'notification'] },\n { name: 'bell-slash', label: 'Notifications Off', tags: ['mute', 'silent', 'off'] },\n { name: 'flag', label: 'Flag', tags: ['mark', 'report', 'bookmark'] },\n { name: 'flag-checkered', label: 'Flag Checkered', tags: ['finish', 'end', 'goal'] },\n { name: 'bookmark', label: 'Bookmark', tags: ['save', 'favorite', 'mark'] },\n { name: 'calendar', label: 'Calendar', tags: ['date', 'schedule', 'event'] },\n { name: 'calendar-days', label: 'Calendar Days', tags: ['date', 'month', 'schedule'] },\n { name: 'calendar-check', label: 'Calendar Check', tags: ['event', 'confirmed', 'scheduled'] },\n { name: 'calendar-plus', label: 'Calendar Add', tags: ['event', 'create', 'schedule'] },\n { name: 'clock', label: 'Clock', tags: ['time', 'schedule', 'hour'] },\n { name: 'hourglass', label: 'Hourglass', tags: ['time', 'waiting', 'timer'] },\n { name: 'stopwatch', label: 'Stopwatch', tags: ['timer', 'time', 'track'] },\n { name: 'rss', label: 'RSS', tags: ['feed', 'news', 'subscribe'] },\n\n // Business & Finance\n { name: 'chart-line', label: 'Chart Line', tags: ['graph', 'analytics', 'trending'] },\n { name: 'chart-bar', label: 'Bar Chart', tags: ['graph', 'statistics', 'data'] },\n { name: 'chart-pie', label: 'Pie Chart', tags: ['graph', 'percentage', 'data'] },\n { name: 'chart-area', label: 'Area Chart', tags: ['graph', 'analytics', 'data'] },\n { name: 'chart-column', label: 'Column Chart', tags: ['graph', 'statistics'] },\n { name: 'chart-simple', label: 'Simple Chart', tags: ['graph', 'data', 'analytics'] },\n { name: 'calculator', label: 'Calculator', tags: ['math', 'compute', 'calculate'] },\n { name: 'percent', label: 'Percent', tags: ['percentage', 'discount', 'rate'] },\n { name: 'dollar-sign', label: 'Dollar', tags: ['money', 'currency', 'usd'] },\n { name: 'euro-sign', label: 'Euro', tags: ['money', 'currency', 'eur'] },\n { name: 'sterling-sign', label: 'Pound', tags: ['money', 'currency', 'gbp'] },\n { name: 'yen-sign', label: 'Yen', tags: ['money', 'currency', 'jpy'] },\n { name: 'coins', label: 'Coins', tags: ['money', 'cash', 'currency'] },\n { name: 'money-bill', label: 'Money Bill', tags: ['cash', 'currency', 'payment'] },\n { name: 'wallet', label: 'Wallet', tags: ['money', 'payment', 'cash'] },\n { name: 'credit-card', label: 'Credit Card', tags: ['payment', 'card', 'bank'] },\n { name: 'money-check', label: 'Check', tags: ['payment', 'bank', 'check'] },\n { name: 'receipt', label: 'Receipt', tags: ['bill', 'invoice', 'payment'] },\n { name: 'file-invoice', label: 'Invoice', tags: ['bill', 'receipt', 'document'] },\n { name: 'file-invoice-dollar', label: 'Invoice Dollar', tags: ['bill', 'payment', 'money'] },\n { name: 'briefcase', label: 'Briefcase', tags: ['business', 'work', 'professional'] },\n { name: 'suitcase', label: 'Suitcase', tags: ['travel', 'business', 'luggage'] },\n { name: 'building', label: 'Building', tags: ['office', 'company', 'business'] },\n { name: 'building-columns', label: 'Bank', tags: ['bank', 'government', 'institution'] },\n { name: 'store', label: 'Store', tags: ['shop', 'retail', 'business'] },\n { name: 'handshake', label: 'Handshake', tags: ['agreement', 'partnership', 'deal'] },\n { name: 'scale-balanced', label: 'Balance', tags: ['law', 'justice', 'legal'] },\n { name: 'gavel', label: 'Gavel', tags: ['law', 'court', 'legal'] },\n\n // Technology & Tools\n { name: 'laptop', label: 'Laptop', tags: ['computer', 'notebook', 'device'] },\n { name: 'laptop-code', label: 'Laptop Code', tags: ['programming', 'development'] },\n { name: 'desktop', label: 'Desktop', tags: ['computer', 'monitor', 'screen'] },\n { name: 'tablet', label: 'Tablet', tags: ['ipad', 'device', 'mobile'] },\n { name: 'tablet-screen-button', label: 'Tablet Button', tags: ['device', 'touch'] },\n { name: 'keyboard', label: 'Keyboard', tags: ['input', 'typing', 'keys'] },\n { name: 'mouse', label: 'Mouse', tags: ['pointer', 'click', 'input'] },\n { name: 'display', label: 'Display', tags: ['monitor', 'screen', 'computer'] },\n { name: 'wifi', label: 'WiFi', tags: ['internet', 'connection', 'wireless'] },\n { name: 'ethernet', label: 'Ethernet', tags: ['network', 'connection', 'cable'] },\n { name: 'signal', label: 'Signal', tags: ['network', 'connection', 'wifi'] },\n { name: 'network-wired', label: 'Network', tags: ['connection', 'lan', 'ethernet'] },\n { name: 'database', label: 'Database', tags: ['data', 'storage', 'sql'] },\n { name: 'hard-drive', label: 'Hard Drive', tags: ['storage', 'disk', 'hdd'] },\n { name: 'server', label: 'Server', tags: ['hosting', 'backend', 'computer'] },\n { name: 'memory', label: 'Memory', tags: ['ram', 'chip', 'hardware'] },\n { name: 'microchip', label: 'Microchip', tags: ['chip', 'processor', 'cpu'] },\n { name: 'code', label: 'Code', tags: ['programming', 'development', 'coding'] },\n { name: 'code-branch', label: 'Git Branch', tags: ['version', 'git', 'branch'] },\n { name: 'code-commit', label: 'Commit', tags: ['git', 'version', 'save'] },\n { name: 'code-merge', label: 'Merge', tags: ['git', 'branch', 'combine'] },\n { name: 'code-pull-request', label: 'Pull Request', tags: ['git', 'pr', 'review'] },\n { name: 'terminal', label: 'Terminal', tags: ['console', 'command', 'cli'] },\n { name: 'window-maximize', label: 'Maximize', tags: ['window', 'expand', 'fullscreen'] },\n { name: 'window-minimize', label: 'Minimize', tags: ['window', 'collapse'] },\n { name: 'window-restore', label: 'Restore', tags: ['window', 'resize'] },\n { name: 'bug', label: 'Bug', tags: ['error', 'debug', 'issue'] },\n { name: 'wrench', label: 'Wrench', tags: ['tools', 'settings', 'fix'] },\n { name: 'screwdriver-wrench', label: 'Tools', tags: ['repair', 'fix', 'settings'] },\n { name: 'hammer', label: 'Hammer', tags: ['tool', 'build', 'construct'] },\n { name: 'shield', label: 'Shield', tags: ['security', 'protection', 'defense'] },\n { name: 'shield-halved', label: 'Shield Half', tags: ['security', 'protection'] },\n { name: 'lock', label: 'Lock', tags: ['security', 'private', 'secure'] },\n { name: 'lock-open', label: 'Lock Open', tags: ['unlocked', 'open'] },\n { name: 'unlock', label: 'Unlock', tags: ['open', 'access', 'unlock'] },\n { name: 'key', label: 'Key', tags: ['access', 'password', 'security'] },\n { name: 'user-lock', label: 'User Lock', tags: ['security', 'private', 'protected'] },\n { name: 'user-shield', label: 'User Shield', tags: ['security', 'protected', 'admin'] },\n { name: 'qrcode', label: 'QR Code', tags: ['code', 'scan', 'barcode'] },\n { name: 'barcode', label: 'Barcode', tags: ['scan', 'code', 'product'] },\n\n // Transportation & Location\n { name: 'car', label: 'Car', tags: ['vehicle', 'automobile', 'transport'] },\n { name: 'car-side', label: 'Car Side', tags: ['vehicle', 'automobile'] },\n { name: 'taxi', label: 'Taxi', tags: ['cab', 'transport', 'vehicle'] },\n { name: 'bus', label: 'Bus', tags: ['transport', 'public', 'vehicle'] },\n { name: 'van-shuttle', label: 'Van', tags: ['transport', 'vehicle'] },\n { name: 'truck', label: 'Truck', tags: ['vehicle', 'delivery', 'transport'] },\n { name: 'truck-fast', label: 'Fast Delivery', tags: ['shipping', 'express', 'delivery'] },\n { name: 'motorcycle', label: 'Motorcycle', tags: ['bike', 'vehicle', 'transport'] },\n { name: 'plane', label: 'Plane', tags: ['aircraft', 'travel', 'flight'] },\n { name: 'plane-departure', label: 'Departure', tags: ['flight', 'travel', 'takeoff'] },\n { name: 'plane-arrival', label: 'Arrival', tags: ['flight', 'travel', 'landing'] },\n { name: 'helicopter', label: 'Helicopter', tags: ['aircraft', 'flight'] },\n { name: 'rocket', label: 'Rocket', tags: ['space', 'launch', 'fast'] },\n { name: 'train', label: 'Train', tags: ['railway', 'transport', 'travel'] },\n { name: 'subway', label: 'Subway', tags: ['metro', 'underground', 'transport'] },\n { name: 'ship', label: 'Ship', tags: ['boat', 'vessel', 'water'] },\n { name: 'anchor', label: 'Anchor', tags: ['ship', 'marine', 'boat'] },\n { name: 'bicycle', label: 'Bicycle', tags: ['bike', 'cycle', 'transport'] },\n { name: 'road', label: 'Road', tags: ['street', 'path', 'route'] },\n { name: 'map', label: 'Map', tags: ['location', 'navigation', 'directions'] },\n { name: 'map-location', label: 'Map Location', tags: ['pin', 'marker', 'place'] },\n { name: 'map-pin', label: 'Location Pin', tags: ['pin', 'marker', 'place'] },\n { name: 'location-dot', label: 'Location', tags: ['pin', 'marker', 'gps'] },\n { name: 'location-crosshairs', label: 'GPS', tags: ['location', 'position', 'gps'] },\n { name: 'route', label: 'Route', tags: ['directions', 'path', 'navigation'] },\n { name: 'globe', label: 'Globe', tags: ['world', 'earth', 'global'] },\n { name: 'earth-americas', label: 'Americas', tags: ['world', 'global', 'earth'] },\n { name: 'earth-europe', label: 'Europe', tags: ['world', 'global', 'earth'] },\n { name: 'earth-asia', label: 'Asia', tags: ['world', 'global', 'earth'] },\n { name: 'compass', label: 'Compass', tags: ['direction', 'navigation', 'north'] },\n { name: 'street-view', label: 'Street View', tags: ['location', 'map', 'view'] },\n\n // Health & Medical\n { name: 'heart-pulse', label: 'Heart Rate', tags: ['health', 'medical', 'heartbeat'] },\n { name: 'heart-circle-plus', label: 'Heart Plus', tags: ['health', 'add', 'medical'] },\n { name: 'stethoscope', label: 'Stethoscope', tags: ['medical', 'doctor', 'health'] },\n { name: 'user-doctor', label: 'Doctor', tags: ['medical', 'physician', 'healthcare'] },\n { name: 'user-nurse', label: 'Nurse', tags: ['medical', 'healthcare', 'hospital'] },\n { name: 'pills', label: 'Pills', tags: ['medicine', 'drugs', 'medication'] },\n { name: 'capsules', label: 'Capsules', tags: ['medicine', 'pills', 'medication'] },\n { name: 'prescription-bottle', label: 'Prescription', tags: ['medicine', 'pharmacy'] },\n { name: 'syringe', label: 'Syringe', tags: ['injection', 'medical', 'vaccine'] },\n { name: 'vial', label: 'Vial', tags: ['medicine', 'vaccine', 'medical'] },\n { name: 'bandage', label: 'Bandage', tags: ['first aid', 'wound', 'medical'] },\n { name: 'thermometer', label: 'Thermometer', tags: ['temperature', 'health', 'medical'] },\n { name: 'hospital', label: 'Hospital', tags: ['medical', 'healthcare', 'building'] },\n { name: 'hospital-user', label: 'Patient', tags: ['medical', 'healthcare', 'patient'] },\n { name: 'bed-pulse', label: 'Hospital Bed', tags: ['medical', 'patient', 'hospital'] },\n { name: 'wheelchair', label: 'Wheelchair', tags: ['accessibility', 'medical', 'disabled'] },\n { name: 'crutch', label: 'Crutch', tags: ['medical', 'injury', 'support'] },\n { name: 'smoking', label: 'Smoking', tags: ['cigarette', 'health', 'no-smoking'] },\n { name: 'smoking-ban', label: 'No Smoking', tags: ['prohibited', 'health'] },\n\n // Education & Learning\n { name: 'graduation-cap', label: 'Graduation', tags: ['education', 'degree', 'graduate'] },\n { name: 'user-graduate', label: 'Graduate', tags: ['student', 'education', 'degree'] },\n { name: 'chalkboard-user', label: 'Teacher', tags: ['education', 'teaching', 'classroom'] },\n { name: 'school', label: 'School', tags: ['education', 'building', 'learning'] },\n { name: 'book', label: 'Book', tags: ['reading', 'education', 'library'] },\n { name: 'book-open', label: 'Open Book', tags: ['reading', 'study', 'learn'] },\n { name: 'book-bookmark', label: 'Bookmark', tags: ['reading', 'save', 'mark'] },\n { name: 'books', label: 'Books', tags: ['reading', 'library', 'education'] },\n { name: 'bookmark', label: 'Bookmark', tags: ['save', 'mark', 'reading'] },\n { name: 'pen', label: 'Pen', tags: ['write', 'draw', 'writing'] },\n { name: 'pen-fancy', label: 'Fancy Pen', tags: ['write', 'signature'] },\n { name: 'pen-nib', label: 'Pen Nib', tags: ['write', 'calligraphy'] },\n { name: 'pencil', label: 'Pencil', tags: ['write', 'draw', 'edit'] },\n { name: 'highlighter', label: 'Highlighter', tags: ['mark', 'emphasize', 'note'] },\n { name: 'marker', label: 'Marker', tags: ['write', 'draw', 'mark'] },\n { name: 'eraser', label: 'Eraser', tags: ['delete', 'remove', 'erase'] },\n { name: 'ruler', label: 'Ruler', tags: ['measure', 'straight', 'tool'] },\n { name: 'ruler-combined', label: 'Rulers', tags: ['measure', 'geometry'] },\n { name: 'calculator', label: 'Calculator', tags: ['math', 'calculate', 'compute'] },\n { name: 'square-root-variable', label: 'Math', tags: ['mathematics', 'equation'] },\n { name: 'microscope', label: 'Microscope', tags: ['science', 'research', 'lab'] },\n { name: 'flask', label: 'Flask', tags: ['science', 'chemistry', 'lab'] },\n { name: 'atom', label: 'Atom', tags: ['science', 'physics', 'chemistry'] },\n { name: 'dna', label: 'DNA', tags: ['science', 'biology', 'genetics'] },\n { name: 'brain', label: 'Brain', tags: ['mind', 'think', 'intelligence'] },\n { name: 'certificate', label: 'Certificate', tags: ['award', 'achievement', 'diploma'] },\n { name: 'award', label: 'Award', tags: ['trophy', 'achievement', 'prize'] },\n { name: 'medal', label: 'Medal', tags: ['award', 'achievement', 'winner'] },\n { name: 'trophy', label: 'Trophy', tags: ['award', 'winner', 'achievement'] },\n\n // Food & Dining\n { name: 'utensils', label: 'Utensils', tags: ['food', 'dining', 'restaurant'] },\n { name: 'fork-knife', label: 'Fork Knife', tags: ['food', 'dining', 'restaurant'] },\n { name: 'plate-utensils', label: 'Plate', tags: ['food', 'dining', 'meal'] },\n { name: 'pizza-slice', label: 'Pizza', tags: ['food', 'slice', 'italian'] },\n { name: 'burger', label: 'Burger', tags: ['food', 'fast', 'hamburger'] },\n { name: 'hotdog', label: 'Hotdog', tags: ['food', 'fast'] },\n { name: 'drumstick-bite', label: 'Chicken', tags: ['food', 'meat', 'poultry'] },\n { name: 'ice-cream', label: 'Ice Cream', tags: ['dessert', 'sweet', 'frozen'] },\n { name: 'mug-hot', label: 'Hot Beverage', tags: ['drink', 'coffee', 'tea'] },\n { name: 'coffee', label: 'Coffee', tags: ['drink', 'beverage', 'cafe'] },\n { name: 'mug-saucer', label: 'Coffee Cup', tags: ['drink', 'coffee', 'tea'] },\n { name: 'glass-water', label: 'Water', tags: ['drink', 'beverage', 'glass'] },\n { name: 'wine-glass', label: 'Wine', tags: ['drink', 'alcohol', 'beverage'] },\n { name: 'champagne-glasses', label: 'Champagne', tags: ['celebrate', 'drink', 'toast'] },\n { name: 'martini-glass', label: 'Martini', tags: ['drink', 'alcohol', 'cocktail'] },\n { name: 'beer-mug-empty', label: 'Beer', tags: ['drink', 'alcohol', 'beverage'] },\n { name: 'cake', label: 'Cake', tags: ['dessert', 'sweet', 'birthday'] },\n { name: 'cake-candles', label: 'Birthday Cake', tags: ['birthday', 'celebration', 'party'] },\n { name: 'cookie', label: 'Cookie', tags: ['food', 'dessert', 'sweet'] },\n { name: 'candy-cane', label: 'Candy Cane', tags: ['candy', 'sweet', 'christmas'] },\n { name: 'apple-whole', label: 'Apple', tags: ['fruit', 'healthy', 'food'] },\n { name: 'lemon', label: 'Lemon', tags: ['fruit', 'citrus', 'food'] },\n { name: 'carrot', label: 'Carrot', tags: ['vegetable', 'healthy', 'food'] },\n { name: 'pepper-hot', label: 'Pepper', tags: ['spicy', 'food', 'hot'] },\n\n // Sports & Recreation\n { name: 'football', label: 'Football', tags: ['sport', 'soccer', 'game'] },\n { name: 'futbol', label: 'Soccer Ball', tags: ['sport', 'football', 'ball'] },\n { name: 'basketball', label: 'Basketball', tags: ['sport', 'ball', 'game'] },\n { name: 'baseball', label: 'Baseball', tags: ['sport', 'ball', 'game'] },\n { name: 'baseball-bat-ball', label: 'Baseball Bat', tags: ['sport', 'baseball'] },\n { name: 'volleyball', label: 'Volleyball', tags: ['sport', 'ball', 'game'] },\n { name: 'table-tennis-paddle-ball', label: 'Table Tennis', tags: ['sport', 'ping-pong'] },\n { name: 'golf-ball-tee', label: 'Golf', tags: ['sport', 'golf', 'game'] },\n { name: 'hockey-puck', label: 'Hockey', tags: ['sport', 'ice', 'game'] },\n { name: 'bowling-ball', label: 'Bowling', tags: ['sport', 'game', 'ball'] },\n { name: 'person-running', label: 'Running', tags: ['sport', 'exercise', 'fitness'] },\n { name: 'person-biking', label: 'Biking', tags: ['sport', 'exercise', 'cycling'] },\n { name: 'person-swimming', label: 'Swimming', tags: ['sport', 'water', 'exercise'] },\n { name: 'person-skiing', label: 'Skiing', tags: ['sport', 'winter', 'snow'] },\n { name: 'dumbbell', label: 'Dumbbell', tags: ['fitness', 'weight', 'gym'] },\n { name: 'weight-hanging', label: 'Weight', tags: ['fitness', 'gym', 'exercise'] },\n { name: 'heart', label: 'Heart', tags: ['health', 'fitness', 'cardio'] },\n { name: 'stopwatch-20', label: 'Timer', tags: ['time', 'sport', 'track'] },\n\n // Weather & Nature\n { name: 'sun', label: 'Sun', tags: ['weather', 'bright', 'sunny'] },\n { name: 'moon', label: 'Moon', tags: ['night', 'dark', 'lunar'] },\n { name: 'star', label: 'Star', tags: ['night', 'sky', 'favorite'] },\n { name: 'cloud', label: 'Cloud', tags: ['weather', 'sky', 'cloudy'] },\n { name: 'cloud-sun', label: 'Partly Cloudy', tags: ['weather', 'mixed'] },\n { name: 'cloud-moon', label: 'Cloudy Night', tags: ['weather', 'night'] },\n { name: 'cloud-rain', label: 'Rain', tags: ['weather', 'precipitation', 'rainy'] },\n { name: 'cloud-showers-heavy', label: 'Heavy Rain', tags: ['weather', 'storm', 'rain'] },\n { name: 'umbrella', label: 'Umbrella', tags: ['rain', 'weather', 'protection'] },\n { name: 'snowflake', label: 'Snow', tags: ['weather', 'cold', 'winter'] },\n { name: 'icicles', label: 'Icicles', tags: ['winter', 'cold', 'ice'] },\n { name: 'temperature-high', label: 'Hot', tags: ['weather', 'temperature', 'heat'] },\n { name: 'temperature-low', label: 'Cold', tags: ['weather', 'temperature', 'cool'] },\n { name: 'bolt', label: 'Lightning', tags: ['weather', 'storm', 'thunder'] },\n { name: 'bolt-lightning', label: 'Thunder', tags: ['weather', 'storm', 'lightning'] },\n { name: 'wind', label: 'Wind', tags: ['weather', 'breeze', 'air'] },\n { name: 'tornado', label: 'Tornado', tags: ['weather', 'storm', 'cyclone'] },\n { name: 'water', label: 'Water', tags: ['nature', 'liquid', 'sea'] },\n { name: 'droplet', label: 'Droplet', tags: ['water', 'liquid', 'drop'] },\n { name: 'fire', label: 'Fire', tags: ['hot', 'burn', 'flame'] },\n { name: 'fire-flame-curved', label: 'Flame', tags: ['fire', 'hot', 'burn'] },\n { name: 'tree', label: 'Tree', tags: ['nature', 'plant', 'forest'] },\n { name: 'seedling', label: 'Seedling', tags: ['plant', 'grow', 'nature'] },\n { name: 'leaf', label: 'Leaf', tags: ['nature', 'plant', 'green'] },\n { name: 'clover', label: 'Clover', tags: ['nature', 'plant', 'lucky'] },\n { name: 'flower', label: 'Flower', tags: ['nature', 'plant', 'blossom'] },\n { name: 'feather', label: 'Feather', tags: ['nature', 'bird', 'light'] },\n { name: 'mountain', label: 'Mountain', tags: ['nature', 'landscape', 'peak'] },\n\n // Shopping & Commerce\n { name: 'shopping-cart', label: 'Shopping Cart', tags: ['buy', 'purchase', 'shop'] },\n { name: 'cart-plus', label: 'Add to Cart', tags: ['shopping', 'add', 'buy'] },\n { name: 'cart-shopping', label: 'Cart', tags: ['shop', 'buy', 'store'] },\n { name: 'bag-shopping', label: 'Shopping Bag', tags: ['buy', 'store', 'retail'] },\n { name: 'basket-shopping', label: 'Basket', tags: ['shopping', 'buy', 'cart'] },\n { name: 'store', label: 'Store', tags: ['shop', 'retail', 'business'] },\n { name: 'shop', label: 'Shop', tags: ['store', 'retail', 'business'] },\n { name: 'cash-register', label: 'Cash Register', tags: ['payment', 'checkout', 'pos'] },\n { name: 'tags', label: 'Tags', tags: ['price', 'label', 'sale'] },\n { name: 'tag', label: 'Tag', tags: ['price', 'label', 'sale'] },\n { name: 'barcode', label: 'Barcode', tags: ['scan', 'product', 'price'] },\n { name: 'percent', label: 'Percent', tags: ['discount', 'sale', 'offer'] },\n { name: 'gift', label: 'Gift', tags: ['present', 'surprise', 'celebration'] },\n { name: 'gifts', label: 'Gifts', tags: ['presents', 'celebration'] },\n { name: 'box', label: 'Box', tags: ['package', 'container', 'shipping'] },\n { name: 'box-open', label: 'Open Box', tags: ['unpack', 'delivery', 'package'] },\n { name: 'boxes-stacked', label: 'Boxes', tags: ['inventory', 'storage', 'warehouse'] },\n\n // Security & Safety\n { name: 'eye', label: 'Eye', tags: ['view', 'watch', 'visible'] },\n { name: 'eye-slash', label: 'Hide', tags: ['hidden', 'invisible', 'password'] },\n { name: 'eye-low-vision', label: 'Low Vision', tags: ['accessibility', 'vision'] },\n { name: 'user-secret', label: 'Secret User', tags: ['anonymous', 'hidden', 'spy'] },\n { name: 'fingerprint', label: 'Fingerprint', tags: ['biometric', 'identity', 'security'] },\n { name: 'id-card', label: 'ID Card', tags: ['identity', 'badge', 'credential'] },\n { name: 'id-badge', label: 'Badge', tags: ['identity', 'credential', 'staff'] },\n { name: 'fire', label: 'Fire', tags: ['hot', 'burn', 'danger'] },\n { name: 'fire-extinguisher', label: 'Fire Extinguisher', tags: ['safety', 'emergency'] },\n { name: 'triangle-exclamation', label: 'Warning', tags: ['alert', 'caution', 'danger'] },\n { name: 'exclamation', label: 'Exclamation', tags: ['alert', 'important', 'warning'] },\n { name: 'circle-exclamation', label: 'Alert', tags: ['warning', 'important'] },\n { name: 'ban', label: 'Ban', tags: ['prohibited', 'forbidden', 'stop'] },\n { name: 'circle-radiation', label: 'Radiation', tags: ['danger', 'hazard', 'warning'] },\n { name: 'skull-crossbones', label: 'Danger', tags: ['hazard', 'poison', 'warning'] },\n { name: 'biohazard', label: 'Biohazard', tags: ['danger', 'hazard', 'warning'] },\n\n // Miscellaneous\n { name: 'circle', label: 'Circle', tags: ['shape', 'round', 'dot'] },\n { name: 'square', label: 'Square', tags: ['shape', 'box'] },\n { name: 'square-full', label: 'Full Square', tags: ['shape', 'filled'] },\n { name: 'circle-dot', label: 'Dot', tags: ['point', 'marker', 'bullet'] },\n { name: 'question', label: 'Question', tags: ['help', 'ask', 'faq'] },\n { name: 'circle-question', label: 'Help', tags: ['question', 'support', 'info'] },\n { name: 'circle-info', label: 'Info', tags: ['information', 'details', 'about'] },\n { name: 'info', label: 'Information', tags: ['info', 'details', 'help'] },\n { name: 'lightbulb', label: 'Lightbulb', tags: ['idea', 'bright', 'innovation'] },\n { name: 'bolt', label: 'Bolt', tags: ['lightning', 'fast', 'power'] },\n { name: 'wand-magic', label: 'Magic Wand', tags: ['magic', 'wizard', 'sparkle'] },\n { name: 'wand-magic-sparkles', label: 'Magic', tags: ['wizard', 'sparkle', 'enchant'] },\n { name: 'puzzle-piece', label: 'Puzzle', tags: ['piece', 'solve', 'game'] },\n { name: 'gamepad', label: 'Gamepad', tags: ['gaming', 'controller', 'play'] },\n { name: 'dice', label: 'Dice', tags: ['game', 'random', 'chance'] },\n { name: 'dice-d20', label: 'D20 Dice', tags: ['game', 'tabletop', 'rpg'] },\n { name: 'chess', label: 'Chess', tags: ['game', 'strategy', 'board'] },\n { name: 'spade', label: 'Spade', tags: ['cards', 'game', 'suit'] },\n { name: 'heart', label: 'Heart Card', tags: ['cards', 'game', 'suit'] },\n { name: 'diamond', label: 'Diamond', tags: ['cards', 'game', 'suit'] },\n { name: 'club', label: 'Club', tags: ['cards', 'game', 'suit'] },\n { name: 'palette', label: 'Palette', tags: ['color', 'art', 'paint'] },\n { name: 'brush', label: 'Brush', tags: ['paint', 'art', 'draw'] },\n { name: 'paintbrush', label: 'Paintbrush', tags: ['art', 'paint', 'draw'] },\n { name: 'scissors', label: 'Scissors', tags: ['cut', 'trim', 'tool'] },\n { name: 'crown', label: 'Crown', tags: ['king', 'royal', 'premium'] },\n { name: 'gem', label: 'Gem', tags: ['diamond', 'jewel', 'precious'] },\n { name: 'ring', label: 'Ring', tags: ['jewelry', 'wedding', 'engagement'] },\n { name: 'mug-hot', label: 'Hot Drink', tags: ['coffee', 'tea', 'beverage'] },\n { name: 'battery-full', label: 'Battery Full', tags: ['power', 'charge', 'energy'] },\n { name: 'battery-half', label: 'Battery Half', tags: ['power', 'charge'] },\n { name: 'battery-empty', label: 'Battery Empty', tags: ['power', 'low', 'charge'] },\n { name: 'plug', label: 'Plug', tags: ['power', 'electricity', 'connect'] },\n { name: 'magnet', label: 'Magnet', tags: ['attract', 'magnetic', 'pull'] },\n { name: 'compass-drafting', label: 'Drafting Compass', tags: ['geometry', 'draw', 'circle'] },\n { name: 'rotate', label: 'Rotate', tags: ['spin', 'turn', 'refresh'] },\n { name: 'infinity', label: 'Infinity', tags: ['unlimited', 'endless', 'loop'] },\n];\n\n//#endregion\n\n//#region ---- Default Providers ----\n\n/**\n * Default icon provider that provides the base set of FontAwesome icons.\n */\nexport class AXPIconProviderDefault extends AXPIconProvider {\n async provide(): Promise<AXPFontAwesomeIcon[]> {\n return DEFAULT_ICONS;\n }\n}\n\n/**\n * Default icon style provider that provides the base set of FontAwesome styles.\n */\nexport class AXPIconStyleProviderDefault extends AXPIconStyleProvider {\n async provide(): Promise<AXPFontAwesomeIconStyle[]> {\n return DEFAULT_ICON_STYLES;\n }\n}\n\n//#endregion\n\n","import { Provider } from '@angular/core';\nimport { AXP_ICON_PROVIDER, AXP_ICON_STYLE_PROVIDER } from './icon-chooser.token';\nimport { AXPIconProviderDefault, AXPIconStyleProviderDefault } from './icon-chooser-default.provider';\n\n//#region ---- Provider Functions ----\n\n/**\n * Provides the default icon provider to the application.\n * This should be registered in your app module or config.\n */\nexport function provideDefaultIconProvider(): Provider {\n return {\n provide: AXP_ICON_PROVIDER,\n useClass: AXPIconProviderDefault,\n multi: true,\n };\n}\n\n/**\n * Provides the default icon style provider to the application.\n * This should be registered in your app module or config.\n */\nexport function provideDefaultIconStyleProvider(): Provider {\n return {\n provide: AXP_ICON_STYLE_PROVIDER,\n useClass: AXPIconStyleProviderDefault,\n multi: true,\n };\n}\n\n/**\n * Provides both default icon and style providers to the application.\n * This is a convenience function that combines provideDefaultIconProvider() and provideDefaultIconStyleProvider().\n */\nexport function provideDefaultIconChooser(): Provider[] {\n return [provideDefaultIconProvider(), provideDefaultIconStyleProvider()];\n}\n\n/**\n * Provides a custom icon provider to the application.\n * This ADDS additional icons alongside the default icon set.\n * \n * @param providerClass - The custom icon provider class\n * \n * @example\n * ```typescript\n * class MyCustomIconProvider extends AXPIconProvider {\n * async provide(): Promise<AXPFontAwesomeIcon[]> {\n * return [\n * { name: 'custom-icon', label: 'Custom Icon' }\n * ];\n * }\n * }\n * \n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideCustomIconProvider(MyCustomIconProvider),\n * ]\n * };\n * ```\n */\nexport function provideCustomIconProvider(providerClass: any): Provider {\n return {\n provide: AXP_ICON_PROVIDER,\n useClass: providerClass,\n multi: true,\n };\n}\n\n/**\n * Provides a custom icon style provider to the application.\n * This ADDS additional icon styles alongside the default styles.\n * \n * @param providerClass - The custom icon style provider class\n * \n * @example\n * ```typescript\n * class MyCustomIconStyleProvider extends AXPIconStyleProvider {\n * async provide(): Promise<AXPFontAwesomeIconStyle[]> {\n * return [\n * { name: 'fa-custom', label: 'Custom' }\n * ];\n * }\n * }\n * \n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideCustomIconStyleProvider(MyCustomIconStyleProvider),\n * ]\n * };\n * ```\n */\nexport function provideCustomIconStyleProvider(providerClass: any): Provider {\n return {\n provide: AXP_ICON_STYLE_PROVIDER,\n useClass: providerClass,\n multi: true,\n };\n}\n\n//#endregion\n\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n template: `\n @for (size of sizes(); track size) {\n <div (click)=\"onSizeClick(size)\" [style.font-size]=\"size\" [class.--selected]=\"size === selectedSize()\">\n <div>\n <span>{{ '@layout:terms.font-sizes.' + size | translate | async }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './font-size-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly sizes = signal<string[]>(['small', 'medium', 'large', 'x-large']);\n\n protected selectedSize = signal<string | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedSize.set(this.sizes().find((s) => s === this.getValue()) ?? this.sizes()[0]);\n }\n });\n\n protected onSizeClick(size: string) {\n this.setValue(size);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPFontSizeChooserWidget: AXPWidgetConfig = {\n name: \"font-size-chooser\",\n title: \"Font Size Chooser\",\n icon: \"fa-light fa-text-size\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-size-chooser-widget.component').then((c) => c.AXPFontSizeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n fontSizeChooser: 'font-size-chooser';\n }\n} ","//#region ----- Imports -----\nimport {\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { AXPRegionalFontStyleLoaderService } from './regional-font-style-loader.service';\n//#endregion\n\n//#region ----- Directive -----\n/** Loads a font stylesheet when the host row enters (or nears) the viewport. */\n@Directive({\n selector: '[axpFontStyleLazyLoad]',\n standalone: true,\n})\nexport class AXPFontStyleLazyLoadDirective implements OnInit, OnDestroy {\n //#region ----- Inputs -----\n readonly axpFontStyleLazyLoad = input.required<string>();\n //#endregion\n\n //#region ----- Services & Dependencies -----\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly fontLoader = inject(AXPRegionalFontStyleLoaderService);\n //#endregion\n\n //#region ----- State -----\n private observer?: IntersectionObserver;\n //#endregion\n\n //#region ----- Lifecycle -----\n ngOnInit(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n if (!entries.some((entry) => entry.isIntersecting)) {\n return;\n }\n\n this.fontLoader.ensureFontStylesLoaded(this.axpFontStyleLazyLoad());\n this.observer?.disconnect();\n this.observer = undefined;\n },\n { rootMargin: '120px 0px' },\n );\n\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n //#endregion\n}\n//#endregion\n","//#region ----- Imports -----\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { resolveFontVariationSettings, type AXPFontStyleOption } from './font-style-options';\nimport { AXPFontStyleLazyLoadDirective } from './font-style-lazy-load.directive';\n//#endregion\n\n//#region ----- Component -----\n@Component({\n templateUrl: './font-style-chooser-popup.component.html',\n styleUrl: './font-style-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPFontStyleLazyLoadDirective],\n})\nexport class AXPFontStyleChooserPopupComponent extends AXBasePageComponent {\n //#region ----- Inputs -----\n @Input() fonts: AXPFontStyleOption[] = [];\n @Input() selectedFontId = 'system-ui';\n //#endregion\n\n //#region ----- Event Handlers -----\n protected fontVariation(fontId: string): string | undefined {\n return resolveFontVariationSettings(fontId);\n }\n\n protected selectFont(font: AXPFontStyleOption): void {\n this.close({ fontId: font.id });\n }\n //#endregion\n}\n//#endregion\n","<div class=\"axp-font-style-chooser-popup flex h-full flex-col bg-lightest\">\n <!-- ----- Scrollable font list filtered by regional language settings ----- -->\n <div class=\"flex-1 overflow-y-auto p-2\">\n <div class=\"flex flex-col gap-1\">\n @for (font of fonts; track font.id) {\n <button\n type=\"button\"\n class=\"axp-font-style-chooser-popup__item\"\n [class.--selected]=\"font.id === selectedFontId\"\n [axpFontStyleLazyLoad]=\"font.id\"\n (click)=\"selectFont(font)\"\n >\n <div class=\"axp-font-style-option\">\n <span\n class=\"axp-font-style-option__sample\"\n [style.font-family]=\"font.cssFamily\"\n [style.font-variation-settings]=\"fontVariation(font.id)\"\n >\n {{ font.title }}\n </span>\n </div>\n </button>\n }\n </div>\n </div>\n</div>\n","//#region ----- Imports -----\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport {\n AXP_LOCALE_MANAGEMENT_PORT,\n AXPSettingsService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { filter } from 'rxjs';\nimport { AXPFontStyleChooserPopupComponent } from './font-style-chooser-popup.component';\nimport { AXP_FONT_STYLE_OPTIONS, resolveFontVariationSettings } from './font-style-options';\nimport {\n resolveEffectiveFontId,\n resolveRegionalFontOptions,\n resolveRegionalFontScriptContext,\n} from './font-style-regional.util';\nimport { AXPRegionalFontStyleLoaderService } from './regional-font-style-loader.service';\n//#endregion\n\n//#region ----- Component -----\n@Component({\n templateUrl: './font-style-chooser-widget.component.html',\n styleUrl: './font-style-chooser-widget.css',\n host: {\n class: 'axp-font-style-chooser block w-full',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule, AXTextBoxModule, FormsModule],\n})\nexport class AXPFontStyleChooserWidgetComponent extends AXPValueWidgetComponent<string> implements OnInit {\n //#region ----- Services & Dependencies -----\n private readonly settingsService = inject(AXPSettingsService);\n private readonly localePort = inject(AXP_LOCALE_MANAGEMENT_PORT, { optional: true });\n private readonly regionalFontLoader = inject(AXPRegionalFontStyleLoaderService);\n private readonly popupService = inject(AXPopupService);\n private readonly translateService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n //#endregion\n\n //#region ----- State Signals -----\n protected readonly fonts = signal(\n AXP_FONT_STYLE_OPTIONS.filter((font) => font.script === 'universal'),\n );\n protected readonly languageCode = signal<string | undefined>(undefined);\n\n protected readonly selectedFontId = computed(() => {\n const available = this.fonts();\n return resolveEffectiveFontId(this.getValue(), available, this.languageCode());\n });\n\n protected readonly selectedFont = computed(() => {\n const id = this.selectedFontId();\n return this.fonts().find((font) => font.id === id) ?? this.fonts()[0];\n });\n\n protected readonly selectedFontLabel = computed(() => this.selectedFont()?.title ?? '');\n\n protected readonly selectedFontFamily = computed(() => this.selectedFont()?.cssFamily ?? 'inherit');\n\n protected readonly selectedFontVariation = computed(() =>\n resolveFontVariationSettings(this.selectedFontId()),\n );\n\n protected readonly isInteractionDisabled = computed(\n () => !!(this.options()['disabled'] || this.options()['readonly']),\n );\n //#endregion\n\n //#region ----- Lifecycle -----\n override async ngOnInit(): Promise<void> {\n await this.refreshFonts();\n super.ngOnInit();\n\n this.settingsService.onLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.refreshFonts();\n });\n\n this.settingsService.onChanged\n .pipe(\n filter(\n (change) =>\n change.keys.includes(AXPRegionalSetting.AvailableLanguages) ||\n change.keys.includes(AXPRegionalSetting.Language),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n void this.refreshFonts();\n });\n }\n //#endregion\n\n //#region ----- Event Handlers -----\n protected async openPopup(): Promise<void> {\n if (this.isInteractionDisabled()) {\n return;\n }\n\n await this.refreshFonts();\n\n const result = await this.popupService.open(AXPFontStyleChooserPopupComponent, {\n title: await this.translateService.translateAsync('@general:widgets.font-style-chooser.popup-title'),\n size: 'md',\n data: {\n fonts: this.fonts(),\n selectedFontId: this.selectedFontId(),\n },\n });\n\n const fontId = result?.data?.fontId as string | undefined;\n if (fontId) {\n this.setValue(resolveEffectiveFontId(fontId, this.fonts(), this.languageCode()));\n }\n }\n //#endregion\n\n //#region ----- Data Loading -----\n private async refreshFonts(): Promise<void> {\n const context = await resolveRegionalFontScriptContext(this.settingsService, this.localePort);\n const available = resolveRegionalFontOptions(context);\n const language = (await this.settingsService.get(AXPRegionalSetting.Language)) as string | undefined;\n this.languageCode.set(language);\n this.fonts.set(available);\n\n const effectiveId = resolveEffectiveFontId(this.getValue(), available, language);\n this.regionalFontLoader.ensureFontStylesLoaded(effectiveId);\n\n if (effectiveId !== this.getValue()) {\n this.setValue(effectiveId);\n }\n }\n //#endregion\n}\n//#endregion\n","<ax-text-box\n class=\"axp-font-style-chooser__input\"\n look=\"fill\"\n [ngModel]=\"selectedFontLabel()\"\n [readonly]=\"true\"\n [disabled]=\"isInteractionDisabled()\"\n [style.font-family]=\"selectedFontFamily()\"\n [style.font-variation-settings]=\"selectedFontVariation()\"\n (click)=\"openPopup()\"\n>\n <ax-suffix>\n <ax-button\n look=\"none\"\n class=\"axp-font-style-chooser__suffix-btn\"\n [disabled]=\"isInteractionDisabled()\"\n >\n <ax-icon icon=\"fa-light fa-up-right-from-square\"></ax-icon>\n </ax-button>\n </ax-suffix>\n</ax-text-box>\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPFontStyleChooserWidget: AXPWidgetConfig = {\n name: \"font-style-chooser\",\n title: \"Font Style Chooser\",\n icon: \"fa-light fa-font\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-style-chooser-widget.component').then((c) => c.AXPFontStyleChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n fontStyleChooser: 'font-style-chooser';\n }\n} ","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface MenuOrientationOption {\n id: string;\n labelKey: string;\n icon?: string;\n image?: string;\n}\n\ntype MenuOrientationChooserMode =\n | 'vertical-mode'\n | 'navigation-mode'\n | 'menu-orientation'\n | 'density';\n\n@Component({\n template: `\n @for (orientation of orientations(); track orientation.id) {\n <div\n (click)=\"onOrientationClick(orientation)\"\n [class.--selected]=\"orientation.id === selectedOrientation()?.id\"\n [class.--visual]=\"!!orientation.image\"\n >\n @if (orientation.image) {\n <img [src]=\"orientation.image\" [alt]=\"orientation.labelKey | translate | async\" />\n <span>{{ orientation.labelKey | translate | async }}</span>\n } @else {\n <i [class]=\"orientation.icon\"></i>\n <span>{{ orientation.labelKey | translate | async }}</span>\n }\n </div>\n }\n `,\n styleUrl: './menu-orientation-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly orientations = computed<MenuOrientationOption[]>(() => {\n const chooser = this.options()['chooser'] as MenuOrientationChooserMode | undefined;\n\n if (chooser === 'vertical-mode') {\n return [\n {\n id: 'compact',\n image: '/assets/images/ui/menu-mode/compact.svg',\n labelKey: '@layout:terms.menu-modes.compact',\n },\n {\n id: 'full',\n image: '/assets/images/ui/menu-mode/full.svg',\n labelKey: '@layout:terms.menu-modes.full',\n },\n ];\n }\n\n if (chooser === 'navigation-mode') {\n return [\n {\n id: 'simple',\n image: '/assets/images/ui/navigation-mode/simple.svg',\n labelKey: '@layout:terms.navigation-modes.simple',\n },\n {\n id: 'tabular',\n image: '/assets/images/ui/navigation-mode/tabular.svg',\n labelKey: '@layout:terms.navigation-modes.tabular',\n },\n ];\n }\n\n if (chooser === 'density') {\n return [\n {\n id: 'normal',\n icon: 'fa-light fa-distribute-spacing-vertical',\n labelKey: '@layout:settings.appearance.items.root-menu.density.options.normal',\n },\n {\n id: 'compact',\n icon: 'fa-light fa-compress',\n labelKey: '@layout:settings.appearance.items.root-menu.density.options.compact',\n },\n ];\n }\n\n return [\n {\n id: 'vertical',\n icon: 'fa-regular fa-square-ellipsis-vertical',\n labelKey: '@layout:terms.menu-modes.vertical',\n },\n {\n id: 'horizontal',\n icon: 'fa-regular fa-square-ellipsis',\n labelKey: '@layout:terms.menu-modes.horizontal',\n },\n ];\n });\n\n protected selectedOrientation = signal<MenuOrientationOption | null>(null);\n\n #eff = effect(() => {\n const options = this.orientations();\n if (this.getValue()) {\n this.selectedOrientation.set(options.find((o) => o.id === this.getValue()) ?? options[0]);\n }\n });\n\n protected onOrientationClick(orientation: MenuOrientationOption): void {\n this.setValue(orientation.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPMenuOrientationChooserWidget: AXPWidgetConfig = {\n name: \"menu-orientation-chooser\",\n title: \"Menu Orientation Chooser\",\n icon: \"fa-light fa-bars-staggered\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./menu-orientation-chooser-widget.component').then((c) => c.AXPMenuOrientationChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n menuOrientationChooser: 'menu-orientation-chooser';\n }\n} ","import { inject, Injectable } from '@angular/core';\nimport { AXP_THEME_PALETTE_PROVIDER } from '../../palette.provider';\nimport { AXPLayoutThemeService } from '../../theme.service';\nimport { AXPThemePalette, AXPThemePaletteColors } from '../../contracts/theme.types';\n\n//#region ---- Types ----\n\nexport interface AXPColor {\n title: string;\n name: string;\n color: string;\n background: string;\n border: string;\n}\n\n//#endregion\n\n//#region ---- Color utilities ----\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const normalized = hex.trim().replace(/^#/, '');\n const full =\n normalized.length === 3\n ? normalized\n .split('')\n .map((c) => c + c)\n .join('')\n : normalized;\n return [\n parseInt(full.slice(0, 2), 16),\n parseInt(full.slice(2, 4), 16),\n parseInt(full.slice(4, 6), 16),\n ];\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((c) => {\n const s = c / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\nfunction contrastForeground(backgroundHex: string): string {\n return relativeLuminance(backgroundHex) > 0.55 ? '#171717' : '#ffffff';\n}\n\nfunction titleCase(str: string): string {\n return str.replace(/-/g, ' ').replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.slice(1).toLowerCase());\n}\n\n//#endregion\n\n//#region ---- Surface variants (palette-synchronized) ----\n\n/**\n * Seven tonal steps per semantic color. Backgrounds are mixed in RGB using the **same palette’s**\n * canvas `light` and `dark` as poles so swatches stay aligned with `AXPThemePaletteProvider` data.\n */\nconst SURFACE_VARIANTS = ['lightest', 'lighter', 'light', 'surface', 'dark', 'darker', 'darkest'] as const;\n\ntype SurfaceVariant = (typeof SURFACE_VARIANTS)[number];\n\ninterface CanvasPoles {\n light: string;\n dark: string;\n}\n\nfunction styleTitlePrefix(style: string): string {\n const accentMatch = /^accent(\\d+)$/.exec(style);\n if (accentMatch) {\n return `Accent ${accentMatch[1]}`;\n }\n return titleCase(style);\n}\n\nfunction surfaceVariantTitle(style: string, variant: SurfaceVariant): string {\n if (variant === 'surface') {\n return styleTitlePrefix(style);\n }\n return `${styleTitlePrefix(style)} ${titleCase(variant)}`;\n}\n\n/** Tailwind utility triplet stored by theme-color-chooser and outcome display rules. */\nexport function buildThemeSurfaceColorTriplet(\n styleKey: string,\n variant: SurfaceVariant,\n): Pick<AXPColor, 'color' | 'background' | 'border'> {\n return {\n color: `text-${styleKey}-on-${variant}`,\n background: `bg-${styleKey}-${variant}`,\n border: `border-${styleKey}-${variant}`,\n };\n}\n\n/** Ordered `\"foreground background border\"` string for theme-color-chooser values. */\nexport function buildThemeSurfaceColorValue(styleKey: string, variant: SurfaceVariant = 'lightest'): string {\n const triplet = buildThemeSurfaceColorTriplet(styleKey, variant);\n return `${triplet.color} ${triplet.background} ${triplet.border}`;\n}\n\nfunction pushVariantScale(entries: AXPColor[], styleKey: string, _baseHex: string, _canvas: CanvasPoles): void {\n for (const variant of SURFACE_VARIANTS) {\n const name = `${styleKey}-${variant}`;\n entries.push({\n title: surfaceVariantTitle(styleKey, variant),\n name,\n ...buildThemeSurfaceColorTriplet(styleKey, variant),\n });\n }\n}\n\nfunction pushFlatSwatch(entries: AXPColor[], title: string, name: string, hex: string): void {\n const color = contrastForeground(hex);\n entries.push({ title, name, color, background: hex, border: hex });\n}\n\n/**\n * Builds the full chooser list from a single `AXPThemePalette` (colors object only).\n */\nfunction buildColorsFromThemePalette(palette: AXPThemePalette): AXPColor[] {\n const colors = palette.colors as AXPThemePaletteColors & { neutral?: string };\n const canvas: CanvasPoles = { light: colors.light, dark: colors.dark };\n const entries: AXPColor[] = [];\n\n const core = ['primary', 'secondary', 'success', 'warning', 'danger'] as const;\n for (const key of core) {\n pushVariantScale(entries, key, colors[key], canvas);\n }\n\n const neutral = colors.neutral;\n if (neutral) {\n pushVariantScale(entries, 'neutral', neutral, canvas);\n }\n\n colors.accents.forEach((hex, index) => {\n pushVariantScale(entries, `accent${index + 1}`, hex, canvas);\n });\n\n pushFlatSwatch(entries, 'Canvas Light', 'canvas-light', colors.light);\n pushFlatSwatch(entries, 'Canvas Dark', 'canvas-dark', colors.dark);\n\n return entries;\n}\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPColorChooserService {\n private readonly themeStore = inject(AXPLayoutThemeService);\n private readonly palettePromise = inject(AXP_THEME_PALETTE_PROVIDER);\n\n private cacheKey: string | null = null;\n private cache: AXPColor[] | null = null;\n\n async getColors(): Promise<AXPColor[]> {\n const paletteName = this.themeStore.currentPalette();\n if (this.cache && this.cacheKey === paletteName) {\n return this.cache;\n }\n\n const provider = await this.palettePromise;\n const list = await provider.getList();\n const palette =\n list.find((p) => p.name === paletteName) ?? list.find((p) => p.name === 'default') ?? list[0] ?? null;\n\n const colors = palette ? buildColorsFromThemePalette(palette) : [];\n this.cacheKey = paletteName;\n this.cache = colors;\n return colors;\n }\n}\n\n//#endregion\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXLookupComponent,\n type AXLookupItem,\n type AXLookupSelectionChangedEvent,\n} from '@acorex/components/lookup';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, OnInit, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPColor, AXPColorChooserService } from './theme-color-chooser.service';\n\n@Component({\n selector: 'ax-color-chooser-widget',\n template: `\n <ax-form-field>\n <ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"colors()\"\n textField=\"title\"\n valueField=\"name\"\n [searchable]=\"true\"\n [placeholder]=\"placeholder()\"\n [itemTemplate]=\"customItemTemplate\"\n [ngModel]=\"selectedColor()\"\n (onValueChanged)=\"handleValueChange($event)\"\n (onSelectionChanged)=\"handleSelectionChanged($event)\"\n [selectedTemplate]=\"customItemTemplate\"\n >\n <ng-template #customItemTemplate let-item>\n <div class=\"flex items-center gap-2 p-2\">\n @if (isHexSwatch(item)) {\n <div\n class=\"w-6 h-6 rounded flex items-center justify-center border border-solid\"\n [style.background-color]=\"item.background\"\n [style.border-color]=\"item.border\"\n [style.color]=\"item.color\"\n >\n <span>Aa</span>\n </div>\n } @else {\n <div\n class=\"w-6 h-6 rounded flex items-center justify-center border border-dashed border-black dark:border-white\"\n [class]=\"item.background\"\n >\n <span [class]=\"item.color\">Aa</span>\n </div>\n }\n <span>{{ item.title }}</span>\n </div>\n </ng-template>\n <ax-validation-rule message=\"field can't be empty\" rule=\"required\"></ax-validation-rule>\n </ax-lookup>\n </ax-form-field>\n `,\n host: {\n class: 'block flex-1 w-full',\n },\n imports: [AXLookupComponent, AXFormModule, CommonModule, FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPColorChooserWidgetEditComponent\n extends AXPValueWidgetComponent<AXPColor | string | undefined>\n implements OnInit {\n private colorService = inject(AXPColorChooserService);\n protected colors = signal<AXPColor[]>([]);\n private lastSelectedColor = signal<AXPColor | undefined>(undefined);\n protected placeholder = computed(() => this.options()['placeholder'] ?? '');\n protected selectedColor = computed(() => {\n const value = this.getValue();\n const fallbackName = () => this.colors()[0]?.name;\n if (!value) {\n return fallbackName();\n }\n if (typeof value === 'string') {\n const parsed = this.parseStringValue(value);\n if (parsed) {\n return parsed;\n }\n return fallbackName();\n }\n return (value as AXPColor).name;\n });\n\n override async ngOnInit() {\n const allColors = await this.colorService.getColors();\n this.colors.set(allColors);\n super.ngOnInit();\n }\n\n protected handleSelectionChanged(event: AXLookupSelectionChangedEvent): void {\n const item = (event.items ?? [])[0] as AXLookupItem | undefined;\n this.lastSelectedColor.set(item as AXPColor | undefined);\n }\n\n handleValueChange(event: AXValueChangedEvent): void {\n if (event.isUserInteraction) {\n if (!event.value) {\n this.setValue(undefined);\n return;\n }\n const color =\n this.lastSelectedColor() ?? this.colors().find((entry) => entry.name === event.value);\n if (!color) {\n return;\n }\n const stringValue = `${color.color} ${color.background} ${color.border}`;\n this.setValue(stringValue);\n }\n }\n\n protected isHexSwatch(color: AXPColor): boolean {\n return color.background.startsWith('#');\n }\n\n private parseStringValue(value: string): string | null {\n const parts = value.trim().split(/\\s+/);\n if (parts.length !== 3) {\n return null;\n }\n const [color, background, border] = parts;\n const exactMatch = this.colors().find(\n (entry) => entry.color === color && entry.background === background && entry.border === border,\n );\n if (exactMatch) {\n return exactMatch.name;\n }\n\n const backgroundMatch = /^bg-(.+)-(.+)$/.exec(background);\n if (backgroundMatch) {\n const name = `${backgroundMatch[1]}-${backgroundMatch[2]}`;\n if (this.colors().some((entry) => entry.name === name)) {\n return name;\n }\n }\n\n return null;\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPThemeColorChooserWidgetConfig: AXPWidgetConfig = {\n name: 'theme-color-chooser',\n title: 'Theme Color Chooser',\n icon: 'fa-light fa-palette',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () => import('./theme-color-chooser-edit.component').then((c) => c.AXPColorChooserWidgetEditComponent),\n },\n column: {\n component: () => import('./theme-color-chooser-column.component').then((c) => c.AXPColorChooserWidgetColumnComponent),\n },\n view: {\n component: () => import('./theme-color-chooser-view.component').then((c) => c.AXPColorChooserWidgetViewComponent),\n },\n\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n themeColorChooser: 'theme-color-chooser';\n }\n}\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPThemeMode } from '../../contracts/theme.types';\n\ninterface ThemeModeOption {\n id: AXPThemeMode;\n icon: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div (click)=\"onModeClick(mode)\" [class.--selected]=\"mode.id === selectedMode()?.id\">\n <div>\n <i [class]=\"mode.icon\"></i>\n </div>\n <span>{{ '@layout:terms.theme-modes.' + mode.id | translate | async }}</span>\n </div>\n }\n `,\n styleUrl: './theme-mode-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly modes = signal<ThemeModeOption[]>([\n { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },\n { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },\n { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },\n ]);\n\n protected selectedMode = signal<ThemeModeOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedMode.set(this.modes().find((m) => m.id === this.getValue()) ?? this.modes()[0]);\n }\n });\n\n protected onModeClick(mode: ThemeModeOption) {\n this.setValue(mode.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPThemeModeChooserWidget: AXPWidgetConfig = {\n name: \"theme-mode-chooser\",\n title: \"Theme Mode Chooser\",\n icon: \"fa-light fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-mode-chooser-widget.component').then((c) => c.AXPThemeModeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n themeModeChooser: 'theme-mode-chooser';\n }\n}","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_THEME_PALETTE_PROVIDER } from '../../palette.provider';\nimport { AXPThemePalette } from '../../contracts/theme.types';\n\n@Component({\n template: `\n @for (palette of palettes(); track palette.name) {\n <div (click)=\"onPaletteClick(palette)\" [class.--selected]=\"palette.name === selectedPalette()?.name\">\n <span>{{ palette.title }}</span>\n <div>\n <div [style.background-color]=\"palette.colors.primary\" class=\"end-7 z-[2]\"></div>\n <div [style.background-color]=\"palette.colors.secondary\" class=\"end-3.5 z-[1]\"></div>\n <div [style.background-color]=\"palette.colors.accents[0]\" class=\"end-0 z-0\"></div>\n </div>\n </div>\n }\n `,\n styleUrl: './theme-palette-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, AXSelectionCdkModule],\n})\nexport class AXPThemePaletteChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n private readonly paletteService = inject(AXP_THEME_PALETTE_PROVIDER);\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected selectedPalette = signal<AXPThemePalette | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedPalette.set(\n this.palettes().find((p) => p.name === this.getValue()) ??\n this.palettes().find((p) => p.name === 'default') ??\n this.palettes()[0],\n );\n }\n });\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n const palletsProviderInstance = await this.paletteService;\n this.palettes.set(await palletsProviderInstance.getList());\n }\n\n protected onPaletteClick(palette: AXPThemePalette) {\n this.setValue(palette.name);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPThemePaletteChooserWidget: AXPWidgetConfig = {\n name: \"theme-palette-chooser\",\n title: \"Theme Palette Chooser\",\n icon: \"fa-light fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-palette-chooser-widget.component').then((c) => c.AXPThemePaletteChooserWidgetComponent),\n },\n }\n}","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPMenuAppearance, normalizeMenuAppearance } from '../../contracts/theme.types';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\n\ninterface MenuAppearanceOption {\n id: AXPMenuAppearance;\n icon: string;\n labelKey: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div (click)=\"onModeClick(mode)\" [class.--selected]=\"mode.id === selectedMode()?.id\">\n <div>\n <i [class]=\"mode.icon\"></i>\n </div>\n <span>{{ mode.labelKey | translate | async }}</span>\n </div>\n }\n `,\n styleUrl: './menu-appearance-chooser-widget.component.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPMenuAppearanceChooserWidgetComponent extends AXPValueWidgetComponent<\n string\n> {\n protected readonly modes = signal<MenuAppearanceOption[]>([\n {\n id: 'dark',\n icon: 'fa-light fa-moon',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.dark',\n },\n {\n id: 'light',\n icon: 'fa-light fa-sun',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.light',\n },\n {\n id: 'brand-light',\n icon: 'fa-light fa-palette',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.brand-light',\n },\n {\n id: 'brand-dark',\n icon: 'fa-light fa-moon-stars',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.brand-dark',\n },\n ]);\n\n protected selectedMode = signal<MenuAppearanceOption | null>(null);\n\n #eff = effect(() => {\n const value = this.getValue();\n const normalized = normalizeMenuAppearance(value, 'dark');\n this.selectedMode.set(\n this.modes().find((m) => m.id === normalized) ?? this.modes()[0],\n );\n });\n\n protected onModeClick(mode: MenuAppearanceOption): void {\n this.setValue(mode.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPMenuAppearanceChooserWidget: AXPWidgetConfig = {\n name: 'menu-appearance-chooser',\n title: 'Menu Appearance Chooser',\n icon: 'fa-light fa-paintbrush',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () =>\n import('./menu-appearance-chooser-widget.component').then(\n (c) => c.AXPMenuAppearanceChooserWidgetComponent,\n ),\n },\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n menuAppearanceChooser: 'menu-appearance-chooser';\n }\n}\n\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPHeaderAppearance, normalizeHeaderAppearance } from '../../contracts/theme.types';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\n\ninterface HeaderAppearanceOption {\n id: AXPHeaderAppearance;\n icon: string;\n labelKey: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div\n (click)=\"onModeClick(mode)\"\n [class.--selected]=\"mode.id === selectedMode()?.id\"\n class=\"axp-header-appearance-chooser__option\"\n >\n <i [class]=\"mode.icon\"></i>\n <span>{{ mode.labelKey | translate | async }}</span>\n </div>\n }\n `,\n styleUrl: './header-appearance-chooser-widget.component.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPHeaderAppearanceChooserWidgetComponent extends AXPValueWidgetComponent<\n string\n> {\n protected readonly modes = signal<HeaderAppearanceOption[]>([\n {\n id: 'brand',\n icon: 'fa-light fa-palette',\n labelKey: '@layout:settings.appearance.items.header.appearance.options.brand',\n },\n {\n id: 'simple',\n icon: 'fa-light fa-window-maximize',\n labelKey: '@layout:settings.appearance.items.header.appearance.options.simple',\n },\n ]);\n\n protected selectedMode = signal<HeaderAppearanceOption | null>(null);\n\n #eff = effect(() => {\n const value = this.getValue();\n const normalized = normalizeHeaderAppearance(value, 'brand');\n this.selectedMode.set(\n this.modes().find((m) => m.id === normalized) ?? this.modes()[0],\n );\n });\n\n protected onModeClick(mode: HeaderAppearanceOption): void {\n this.setValue(mode.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPHeaderAppearanceChooserWidget: AXPWidgetConfig = {\n name: 'header-appearance-chooser',\n title: 'Header Appearance Chooser',\n icon: 'fa-light fa-window-maximize',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () =>\n import('./header-appearance-chooser-widget.component').then(\n (c) => c.AXPHeaderAppearanceChooserWidgetComponent,\n ),\n },\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n headerAppearanceChooser: 'header-appearance-chooser';\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPFontSizeChooserWidget } from './widgets/font-size-chooser';\nimport { AXPFontStyleChooserWidget } from './widgets/font-style-chooser';\nimport { AXPIconChooserWidget } from './widgets/icon-chooser';\nimport { AXPMenuOrientationChooserWidget } from './widgets/menu-orientation-chooser';\nimport { AXPThemeColorChooserWidgetConfig } from './widgets/theme-color-chooser';\nimport { AXPThemeModeChooserWidget } from './widgets/theme-mode-chooser';\nimport { AXPThemePaletteChooserWidget } from './widgets/theme-palette-chooser';\nimport { AXPMenuAppearanceChooserWidget } from './widgets/menu-appearance-chooser';\nimport { AXPHeaderAppearanceChooserWidget } from './widgets/header-appearance-chooser';\n\n//#endregion\n\n//#region ---- Theme Widgets Provider ----\n\nconst WIDGETS = [\n AXPThemePaletteChooserWidget,\n AXPThemeModeChooserWidget,\n AXPMenuAppearanceChooserWidget,\n AXPHeaderAppearanceChooserWidget,\n AXPMenuOrientationChooserWidget,\n AXPFontSizeChooserWidget,\n AXPFontStyleChooserWidget,\n AXPIconChooserWidget,\n AXPThemeColorChooserWidgetConfig,\n];\n\n@Injectable()\nexport class AXPThemesSharedWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","import {\n AXP_SETTING_DEFINITION_PROVIDER,\n AXPPlatformSettingsLoadState,\n} from '@acorex-platform/framework-client/common';\nimport {\n AXPAppStartUpService,\n AXP_APP_STARTUP_PRIORITY,\n AXPComponentSlotModule,\n AXP_LOGO_THEME_RESOLVER,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { inject, Injector, NgModule } from '@angular/core';\nimport { AXPThemeSlotComponent } from './slots/theme-slot.component';\nimport { AXPLayoutThemeService } from './theme.service';\nimport { provideDefaultIconChooser } from './widgets/icon-chooser';\nimport { AXPThemesSharedWidgetsProvider } from './widget-definition.provider';\n@NgModule({\n imports: [\n AXPComponentSlotModule.forRoot({\n 'root-header-end': [\n {\n priority: 50,\n name: 'theme',\n component: AXPThemeSlotComponent,\n },\n ],\n }),\n AXPWidgetCoreModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_LOGO_THEME_RESOLVER,\n useExisting: AXPLayoutThemeService,\n },\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXPThemesSharedWidgetsProvider, multi: true },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./settings.provider')).AXPThemeSettingProvider;\n return new provider(injector);\n },\n multi: true,\n },\n ...provideDefaultIconChooser(),\n ],\n})\nexport class AXPThemesSharedModule {\n constructor(appInitService: AXPAppStartUpService, injector: Injector) {\n const service = injector.get(AXPLayoutThemeService);\n const platformSettingsLoadState = injector.get(AXPPlatformSettingsLoadState, null);\n appInitService.registerTask({\n name: 'layout-theme',\n statusText: '@layout:app-startup.applying-theme-settings',\n priority: AXP_APP_STARTUP_PRIORITY.layoutTheme,\n run: async () => {\n if (\n platformSettingsLoadState?.hasFailure() ||\n platformSettingsLoadState?.hasPendingOfflineContinue() ||\n platformSettingsLoadState?.isOfflineMode()\n ) {\n return;\n }\n const LAYOUT_THEME_STARTUP_TIMEOUT_MS = 8_000;\n await Promise.race([\n service.loadSettings().catch((error: unknown) => {\n console.warn('layout-theme settings apply failed', error);\n }),\n new Promise<void>((resolve) => {\n setTimeout(resolve, LAYOUT_THEME_STARTUP_TIMEOUT_MS);\n }),\n ]);\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i2","i3","i4","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-framework-client-themes-shared.mjs","sources":["../../../../../libs/framework/client/themes/shared/src/lib/contracts/settings.keys.ts","../../../../../libs/framework/client/themes/shared/src/lib/contracts/theme.types.ts","../../../../../libs/framework/client/themes/shared/src/lib/contracts/theme-boot.util.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-options.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-regional.util.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/regional-font-styles.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/regional-font-style-loader.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/theme.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/slots/theme-slot.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/palette.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/contracts/index.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser.token.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-popup.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-edit.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser-default.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/icon-chooser/icon-chooser.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-lazy-load.directive.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-popup.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-popup.component.html","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.component.html","../../../../../libs/framework/client/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-color-chooser/theme-color-chooser.service.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-color-chooser/theme-color-chooser-edit.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-color-chooser/theme-color-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-appearance-chooser/menu-appearance-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/menu-appearance-chooser/menu-appearance-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/header-appearance-chooser/header-appearance-chooser-widget.component.ts","../../../../../libs/framework/client/themes/shared/src/lib/widgets/header-appearance-chooser/header-appearance-chooser-widget.config.ts","../../../../../libs/framework/client/themes/shared/src/lib/widget-definition.provider.ts","../../../../../libs/framework/client/themes/shared/src/lib/shared.module.ts","../../../../../libs/framework/client/themes/shared/src/acorex-platform-framework-client-themes-shared.ts"],"sourcesContent":["export enum AXPThemeLayoutSetting {\n Name = 'Common:Setting:Layout.Name',\n Layout = 'Common:Setting:Layout.Layout',\n Font = 'Common:Setting:Layout.Font.Family',\n FontSize = 'Common:Setting:Layout.Font.Size',\n Palette = 'Common:Setting:Layout.Palette',\n Mode = 'Common:Setting:Layout.Mode',\n SideMenuStatus = 'Common:Setting:Layout.SideMenu.Status',\n SideMenuWidth = 'Common:Setting:Layout.SideMenu.Width',\n SideMenuCompactWidth = 'Common:Setting:Layout.SideMenu.CompactWidth',\n MenuOrientation = 'Common:Setting:Layout.RootMenu.Direction',\n MenuVerticalMode = 'Common:Setting:Layout.RootMenu.VerticalMode',\n MenuToggleCyclesStyle = 'Common:Setting:Layout.RootMenu.ToggleCyclesStyle',\n MenuBadgeVisible = 'Common:Setting:Layout.RootMenu.Badge',\n MenuLookWithLine = 'Common:Setting:Layout.RootMenu.LookWithLine',\n MenuChildBackgroundDarker = 'Common:Setting:Layout.RootMenu.ChildBackgroundDarker',\n MenuDensity = 'Common:Setting:Layout.RootMenu.Density',\n MenuDark = 'Common:Setting:Layout.RootMenu.Dark',\n MenuFooterFullWidth = 'Common:Setting:Layout.RootMenu.Footer.FullWidth',\n HeaderAppearance = 'Common:Setting:Layout.Header.Appearance',\n}\n","export interface AXPThemePaletteColors {\n primary: string;\n secondary: string;\n success: string;\n warning: string;\n danger: string;\n accents: string[];\n dark: string;\n light: string;\n}\n\nexport interface AXPThemePalette {\n name: string;\n title: string;\n colors: AXPThemePaletteColors;\n}\n\n// Theme Enum\nexport enum AXPThemeMode {\n Light = 'light',\n Dark = 'dark',\n System = 'system',\n}\n\n// Side Menu State Enum\nexport enum AXPSideMenuState {\n Opened = 'opened',\n Closed = 'closed',\n}\n\nexport function normalizeSideMenuState(value: unknown, fallback: AXPSideMenuState): AXPSideMenuState {\n if (value === AXPSideMenuState.Opened || value === AXPSideMenuState.Closed) {\n return value;\n }\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'opened' || normalized === 'open') {\n return AXPSideMenuState.Opened;\n }\n if (normalized === 'closed' || normalized === 'close') {\n return AXPSideMenuState.Closed;\n }\n }\n if (typeof value === 'object' && value !== null && 'id' in value) {\n return normalizeSideMenuState((value as { id: unknown }).id, fallback);\n }\n return fallback;\n}\n\n// Menu Orientation Enum\nexport enum AXPMenuOrientation {\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\n// Vertical side menu display mode\nexport enum AXPMenuVerticalMode {\n Compact = 'compact',\n Full = 'full',\n}\n\nexport const AXP_SIDE_MENU_FULL_DEFAULT_WIDTH = 300;\nexport const AXP_SIDE_MENU_COMPACT_WIDTH = 80;\n\n/** Root vertical side-menu appearance persisted in layout settings. */\nexport type AXPMenuAppearance = 'dark' | 'light' | 'brand-light' | 'brand-dark';\n\nexport function normalizeMenuAppearance(\n value: unknown,\n fallback: AXPMenuAppearance = 'dark',\n): AXPMenuAppearance {\n if (\n value === 'dark' ||\n value === 'light' ||\n value === 'brand-light' ||\n value === 'brand-dark'\n ) {\n return value;\n }\n\n // Legacy persisted value before brand light/dark split.\n if (value === 'brand') {\n return 'brand-light';\n }\n\n if (typeof value === 'boolean') {\n return value ? 'dark' : 'light';\n }\n\n return fallback;\n}\n\n/** Main application header appearance persisted in layout settings. */\nexport type AXPHeaderAppearance = 'brand' | 'simple';\n\nexport function normalizeHeaderAppearance(\n value: unknown,\n fallback: AXPHeaderAppearance = 'brand',\n): AXPHeaderAppearance {\n if (value === 'brand' || value === 'simple') {\n return value;\n }\n\n return fallback;\n}\n","import { AXPThemeMode } from './theme.types';\n\n//#region ----- Theme boot cache (first paint) -----\n\n/** localStorage key for last applied layout mode (`light` | `dark` | `system`). */\nexport const AXP_THEME_BOOT_MODE_KEY = 'axp-boot-theme-mode';\n\n/** localStorage key for last applied palette name. */\nexport const AXP_THEME_BOOT_PALETTE_KEY = 'axp-boot-theme-palette';\n\nexport function coerceThemeMode(value: unknown, fallback: AXPThemeMode): AXPThemeMode {\n if (value === AXPThemeMode.Light || value === AXPThemeMode.Dark || value === AXPThemeMode.System) {\n return value;\n }\n if (typeof value === 'object' && value !== null && 'id' in value) {\n return coerceThemeMode((value as { id: unknown }).id, fallback);\n }\n return fallback;\n}\n\nexport function readBootThemeMode(): AXPThemeMode {\n try {\n return coerceThemeMode(localStorage.getItem(AXP_THEME_BOOT_MODE_KEY), AXPThemeMode.Light);\n } catch {\n return AXPThemeMode.Light;\n }\n}\n\nexport function readBootThemePalette(): string {\n try {\n const name = localStorage.getItem(AXP_THEME_BOOT_PALETTE_KEY)?.trim();\n return name && name.length > 0 ? name : 'default';\n } catch {\n return 'default';\n }\n}\n\nexport function persistThemeBootCache(mode: AXPThemeMode, palette: string): void {\n try {\n localStorage.setItem(AXP_THEME_BOOT_MODE_KEY, mode);\n const name = palette.trim();\n if (name.length > 0) {\n localStorage.setItem(AXP_THEME_BOOT_PALETTE_KEY, name);\n }\n } catch {\n /* private mode / quota */\n }\n}\n\n//#endregion\n","//#region ----- Types -----\nexport type AXPFontScript = 'universal' | 'en' | 'fa' | 'ar';\n\nexport interface AXPFontStyleOption {\n id: string;\n title: string;\n cssFamily: string;\n script: AXPFontScript;\n}\n//#endregion\n\n//#region ----- Constants -----\nconst FONT_FALLBACK = 'Tahoma, system-ui, sans-serif';\n//#endregion\n\n//#region ----- Options -----\nexport const AXP_FONT_STYLE_OPTIONS: AXPFontStyleOption[] = [\n {\n id: 'system-ui',\n title: 'System Default',\n cssFamily: `system-ui, ${FONT_FALLBACK}`,\n script: 'universal',\n },\n {\n id: 'tahoma',\n title: 'Tahoma',\n cssFamily: `Tahoma, system-ui, sans-serif`,\n script: 'universal',\n },\n {\n id: 'inter',\n title: 'Inter',\n cssFamily: `inter, ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'open-sans',\n title: 'Open Sans',\n cssFamily: `\"open-sans\", ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'roboto',\n title: 'Roboto',\n cssFamily: `roboto, ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'rubik',\n title: 'Rubik',\n cssFamily: `rubik, ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'google-sans',\n title: 'Google Sans',\n cssFamily: `\"google-sans\", ${FONT_FALLBACK}`,\n script: 'en',\n },\n {\n id: 'vazirmatn',\n title: 'Vazir وزیر',\n cssFamily: `vazirmatn, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'dana',\n title: 'Dana دانا',\n cssFamily: `dana, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'iranyekanx',\n title: 'Iran Yekan X ایرانیکان',\n cssFamily: `iranyekanx, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'peyda',\n title: 'Peyda پیدا',\n cssFamily: `peyda, ${FONT_FALLBACK}`,\n script: 'fa',\n },\n {\n id: 'cairo',\n title: 'Cairo',\n cssFamily: `cairo, ${FONT_FALLBACK}`,\n script: 'ar',\n },\n {\n id: 'kufam',\n title: 'Kufam',\n cssFamily: `kufam, ${FONT_FALLBACK}`,\n script: 'ar',\n },\n {\n id: 'noto-kufi-arabic',\n title: 'Noto Kufi Arabic',\n cssFamily: `\"noto-kufi-arabic\", ${FONT_FALLBACK}`,\n script: 'ar',\n },\n {\n id: 'playpen-sans-arabic',\n title: 'Playpen Sans Arabic',\n cssFamily: `\"playpen-sans-arabic\", ${FONT_FALLBACK}`,\n script: 'ar',\n },\n];\n//#endregion\n\n//#region ----- Helpers -----\nexport function resolveFontCssFamily(fontId: string | null | undefined): string {\n const match = AXP_FONT_STYLE_OPTIONS.find((font) => font.id === fontId);\n return match?.cssFamily ?? fontId ?? `system-ui, ${FONT_FALLBACK}`;\n}\n\nexport function resolveFontVariationSettings(fontId: string | null | undefined): string | undefined {\n if (fontId === 'iranyekanx') {\n return '\"dots\" 1';\n }\n return undefined;\n}\n//#endregion\n","//#region ----- Imports -----\nimport {\n AXP_LOCALE_MANAGEMENT_PORT,\n AXPSettingsService,\n resolveEffectiveAvailableLanguageCodes,\n primaryLanguageSubtag,\n type AXPLocaleManagementPort,\n} from '@acorex-platform/framework-client/common';\nimport { Injector } from '@angular/core';\nimport {\n AXP_FONT_STYLE_OPTIONS,\n type AXPFontStyleOption,\n} from './font-style-options';\n//#endregion\n\n//#region ----- Types -----\nexport interface AXPRegionalFontScriptContext {\n showEnglishFonts: boolean;\n showPersianFonts: boolean;\n showArabicFonts: boolean;\n}\n//#endregion\n\n//#region ----- Regional context -----\nfunction resolveContextFromLocaleCodes(codes: string[]): AXPRegionalFontScriptContext {\n if (codes.length === 0) {\n return { showEnglishFonts: true, showPersianFonts: false, showArabicFonts: false };\n }\n\n let showEnglishFonts = false;\n let showPersianFonts = false;\n let showArabicFonts = false;\n\n for (const code of codes) {\n const language = primaryLanguageSubtag(code);\n if (language === 'fa' || language === 'ar') {\n showPersianFonts = true;\n showArabicFonts = true;\n } else {\n showEnglishFonts = true;\n }\n }\n\n return { showEnglishFonts, showPersianFonts, showArabicFonts };\n}\n\nfunction resolveContextFromProfiles(profiles: Array<{ code?: string }>): AXPRegionalFontScriptContext {\n const codes = profiles.map((profile) => profile.code).filter((code): code is string => !!code);\n return resolveContextFromLocaleCodes(codes);\n}\n\nasync function resolveContextFromAvailableLanguages(\n settingsService: AXPSettingsService,\n localePort?: AXPLocaleManagementPort | null,\n): Promise<AXPRegionalFontScriptContext | null> {\n const allowed = await resolveEffectiveAvailableLanguageCodes(settingsService);\n if (allowed.length === 0) {\n return null;\n }\n\n if (localePort) {\n try {\n const profiles = await localePort.getAvailableLocaleProfiles();\n const profileCodes = profiles.map((profile) => profile.code).filter(Boolean);\n if (profileCodes.length > 0) {\n const allowSet = new Set(allowed);\n const intersected = profileCodes.filter((code) => allowSet.has(code));\n if (intersected.length > 0) {\n return resolveContextFromLocaleCodes(intersected);\n }\n }\n } catch {\n // use allowed codes only\n }\n }\n\n return resolveContextFromLocaleCodes(allowed);\n}\n\nexport async function resolveRegionalFontScriptContext(\n settingsService: AXPSettingsService,\n localePort?: AXPLocaleManagementPort | null,\n): Promise<AXPRegionalFontScriptContext> {\n const fromLanguages = await resolveContextFromAvailableLanguages(settingsService, localePort);\n if (fromLanguages) {\n return fromLanguages;\n }\n\n if (localePort) {\n try {\n const profiles = await localePort.getAvailableLocaleProfiles();\n if (profiles.length > 0) {\n return resolveContextFromProfiles(profiles);\n }\n } catch {\n // fall through to default\n }\n }\n\n return { showEnglishFonts: true, showPersianFonts: false, showArabicFonts: false };\n}\n\nexport async function resolveRegionalFontScriptContextFromInjector(\n injector: Injector,\n): Promise<AXPRegionalFontScriptContext> {\n const settingsService = injector.get(AXPSettingsService);\n const localePort = injector.get(AXP_LOCALE_MANAGEMENT_PORT, null, { optional: true });\n return resolveRegionalFontScriptContext(settingsService, localePort);\n}\n//#endregion\n\n//#region ----- Filtering -----\nexport function filterFontsForRegionalContext(\n options: AXPFontStyleOption[],\n context: AXPRegionalFontScriptContext,\n): AXPFontStyleOption[] {\n return options.filter((font) => {\n switch (font.script) {\n case 'universal':\n return true;\n case 'en':\n return context.showEnglishFonts;\n case 'fa':\n return context.showPersianFonts;\n case 'ar':\n return context.showArabicFonts;\n default:\n return false;\n }\n });\n}\n\nexport function resolveRegionalFontOptions(context: AXPRegionalFontScriptContext): AXPFontStyleOption[] {\n return filterFontsForRegionalContext(AXP_FONT_STYLE_OPTIONS, context);\n}\n\nexport function resolveRegionalDefaultFontId(\n availableFonts: AXPFontStyleOption[],\n languageCode?: string | null,\n): string {\n const language = languageCode ? primaryLanguageSubtag(languageCode) : null;\n\n if (language === 'fa') {\n const iranYekan = availableFonts.find((font) => font.id === 'iranyekanx');\n if (iranYekan) {\n return iranYekan.id;\n }\n }\n\n return availableFonts[0]?.id ?? 'system-ui';\n}\n\nexport function resolveEffectiveFontId(\n fontId: string | null | undefined,\n availableFonts: AXPFontStyleOption[],\n languageCode?: string | null,\n): string {\n const fallback = resolveRegionalDefaultFontId(availableFonts, languageCode);\n\n if (!fontId) {\n return fallback;\n }\n\n if (fontId === 'system-ui' && languageCode && primaryLanguageSubtag(languageCode) === 'fa') {\n return fallback;\n }\n\n return availableFonts.some((font) => font.id === fontId) ? fontId : fallback;\n}\n//#endregion\n","//#region ----- Types -----\n/** font id → @font-face stylesheet href (app assets). Universal fonts omit an entry. */\nexport type AXPRegionalFontStylesheetMap = Readonly<Record<string, string>>;\n//#endregion\n\n//#region ----- Config -----\nlet regionalFontStylesheets: AXPRegionalFontStylesheetMap = {};\n\n/** App-level font-face stylesheets keyed by font-style-chooser id (demo assets). */\nexport function configureRegionalFontStylesheets(map: AXPRegionalFontStylesheetMap): void {\n regionalFontStylesheets = { ...map };\n}\n\nexport function getRegionalFontStylesheet(fontId: string): string | undefined {\n return regionalFontStylesheets[fontId];\n}\n//#endregion\n","//#region ----- Imports -----\nimport { Injectable } from '@angular/core';\nimport { getRegionalFontStylesheet } from './regional-font-styles.config';\n//#endregion\n\n//#region ----- Service -----\n@Injectable({ providedIn: 'root' })\nexport class AXPRegionalFontStyleLoaderService {\n //#region ----- State -----\n private readonly loadedStylesheets = new Set<string>();\n //#endregion\n\n //#region ----- Public API -----\n /** Loads @font-face stylesheets for the given font ids (skips ids with no configured href). */\n ensureFontStylesLoaded(fontIds: string | readonly string[]): void {\n const ids = typeof fontIds === 'string' ? [fontIds] : fontIds;\n for (const fontId of ids) {\n const href = getRegionalFontStylesheet(fontId);\n if (href) {\n this.ensureStylesheet(href);\n }\n }\n }\n //#endregion\n\n //#region ----- Private helpers -----\n private ensureStylesheet(href: string): void {\n if (!href || this.loadedStylesheets.has(href)) {\n return;\n }\n\n const selector = `link[data-axp-regional-font=\"${href}\"]`;\n if (document.head.querySelector(selector)) {\n this.loadedStylesheets.add(href);\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-axp-regional-font', href);\n document.head.appendChild(link);\n this.loadedStylesheets.add(href);\n }\n //#endregion\n}\n//#endregion\n","import { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope, AXPRegionalSetting, coerceUnknownToBoolean } from '@acorex-platform/framework-shared/core';\nimport { AXPDebugService, AXPDeviceService, AXPScreenSize, OVERLAY_LAYOUT_TRACE_NS } from '@acorex-platform/framework-client/core';\nimport { HttpClient } from '@angular/common/http';\nimport { computed, effect, inject, Injector } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { filter, firstValueFrom, timeout, timer } from 'rxjs';\nimport { AXPThemeLayoutSetting } from './contracts/settings.keys';\nimport {\n coerceThemeMode,\n persistThemeBootCache,\n readBootThemeMode,\n readBootThemePalette,\n} from './contracts/theme-boot.util';\nimport {\n AXP_SIDE_MENU_COMPACT_WIDTH,\n AXP_SIDE_MENU_FULL_DEFAULT_WIDTH,\n AXPMenuAppearance,\n AXPHeaderAppearance,\n AXPMenuOrientation,\n AXPMenuVerticalMode,\n AXPSideMenuState,\n AXPThemeMode,\n normalizeHeaderAppearance,\n normalizeMenuAppearance,\n normalizeSideMenuState,\n} from './contracts/theme.types';\nimport { resolveFontCssFamily, resolveFontVariationSettings } from './widgets/font-style-chooser/font-style-options';\nimport {\n resolveEffectiveFontId,\n resolveRegionalFontOptions,\n resolveRegionalFontScriptContextFromInjector,\n} from './widgets/font-style-chooser/font-style-regional.util';\nimport { AXPRegionalFontStyleLoaderService } from './widgets/font-style-chooser/regional-font-style-loader.service';\n\nfunction normalizeMenuVerticalMode(value: unknown, fallback: AXPMenuVerticalMode): AXPMenuVerticalMode {\n if (value === AXPMenuVerticalMode.Compact || value === AXPMenuVerticalMode.Full) {\n return value;\n }\n if (typeof value === 'object' && value !== null && 'id' in value) {\n const id = (value as { id: string }).id;\n if (id === AXPMenuVerticalMode.Compact || id === AXPMenuVerticalMode.Full) {\n return id as AXPMenuVerticalMode;\n }\n }\n return fallback;\n}\n// ThemeStore - Manages theme settings, system changes, and loading states\nexport const AXPLayoutThemeService = signalStore(\n { providedIn: 'root' },\n\n // Initial State\n withState(() => {\n const isSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n // Helper function to get the initial screen size for side menu initialization\n const getInitialScreenSize = (): AXPScreenSize => {\n const width = window.innerWidth;\n if (width <= 600) return AXPScreenSize.Small;\n if (width <= 1024) return AXPScreenSize.Medium;\n return AXPScreenSize.Large;\n };\n\n const state = {\n currentMode: readBootThemeMode(),\n currentPalette: readBootThemePalette(),\n systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light) as AXPThemeMode,\n font: {\n family: 'system-ui',\n size: 'medium',\n },\n overlayLoading: false,\n navigationLoading: false,\n overlayLoadingTaskCount: 0,\n navigationLoadingTaskCount: 0,\n sideMenuState: (getInitialScreenSize() === AXPScreenSize.Large\n ? AXPSideMenuState.Opened\n : AXPSideMenuState.Closed) as AXPSideMenuState,\n /** Ephemeral overlay drawer state on small/medium viewports; never persisted. */\n overlaySideMenuOpen: false,\n sideMenuWidth: AXP_SIDE_MENU_FULL_DEFAULT_WIDTH,\n sideMenuCompactWidth: AXP_SIDE_MENU_COMPACT_WIDTH,\n menuVerticalMode: AXPMenuVerticalMode.Full,\n menuToggleCyclesStyle: false,\n menuOrientation: 'vertical' as AXPMenuOrientation,\n menuAppearance: 'light' as AXPMenuAppearance,\n headerAppearance: 'brand' as AXPHeaderAppearance,\n mainFooterFullWidth: false,\n _listener: null as ((e: MediaQueryListEvent) => void) | null,\n isPrinting: false,\n };\n\n return state;\n }),\n\n // Computed Signals\n withComputed(\n (\n {\n currentMode: currentTheme,\n systemThemeMode: systemTheme,\n sideMenuState,\n overlaySideMenuOpen,\n overlayLoading,\n navigationLoading,\n overlayLoadingTaskCount,\n menuOrientation,\n menuVerticalMode,\n menuAppearance,\n headerAppearance,\n mainFooterFullWidth,\n sideMenuWidth,\n sideMenuCompactWidth,\n isPrinting,\n menuToggleCyclesStyle,\n },\n deviceService = inject(AXPDeviceService),\n ) => {\n const effectiveMenuVerticalMode = computed(() => {\n if (!deviceService.isLarge()) {\n return AXPMenuVerticalMode.Full;\n }\n return normalizeMenuVerticalMode(menuVerticalMode(), AXPMenuVerticalMode.Full);\n });\n\n return {\n isDarkMode: computed(() => {\n if (isPrinting()) {\n return false;\n }\n return (\n currentTheme() === AXPThemeMode.Dark ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Dark)\n );\n }),\n isLightMode: computed(\n () =>\n currentTheme() === AXPThemeMode.Light ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Light),\n ),\n isSystemMode: computed(() => currentTheme() === AXPThemeMode.System),\n isSideMenuOpen: computed(() =>\n deviceService.isLarge()\n ? sideMenuState() === AXPSideMenuState.Opened\n : overlaySideMenuOpen(),\n ),\n isOverlayLoading: computed(() => overlayLoading()),\n overlayTaskCount: computed(() => overlayLoadingTaskCount()),\n isNavigationLoading: computed(() => navigationLoading()),\n isMenuHorizontal: computed(() => menuOrientation() === AXPMenuOrientation.Horizontal),\n menuToggleCyclesStyleEnabled: computed(() => coerceUnknownToBoolean(menuToggleCyclesStyle())),\n effectiveMenuVerticalMode,\n sideMenuDrawerWidth: computed(() =>\n effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact ? sideMenuCompactWidth() : sideMenuWidth(),\n ),\n menuDarkEnabled: computed(() => {\n const appearance = menuAppearance();\n return appearance === 'dark' || appearance === 'brand-dark';\n }),\n menuBrandEnabled: computed(() => {\n const appearance = menuAppearance();\n return appearance === 'brand-light' || appearance === 'brand-dark';\n }),\n /** Full-width footer applies only to vertical layout. */\n effectiveMainFooterFullWidth: computed(\n () =>\n menuOrientation() !== AXPMenuOrientation.Horizontal && mainFooterFullWidth(),\n ),\n headerBrandEnabled: computed(() => headerAppearance() === 'brand'),\n headerButtonColor: computed(() =>\n headerAppearance() === 'simple' ? ('default' as const) : ('primary' as const),\n ),\n headerButtonLook: computed(() =>\n headerAppearance() === 'simple' ? ('blank' as const) : ('default' as const),\n ),\n };\n },\n ),\n\n // Methods for State Management\n withMethods(\n (store, http = inject(HttpClient), settingsService = inject(AXPSettingsService), deviceService = inject(AXPDeviceService), injector = inject(Injector)) => {\n const _applySettings = async () => {\n // Initialize theme and side menu setting from storage\n const settingThemeMode = coerceThemeMode(\n await settingsService.get(AXPThemeLayoutSetting.Mode),\n AXPThemeMode.Light,\n );\n patchState(store, { currentMode: settingThemeMode });\n const settingThemePaletteRaw = await settingsService.get(AXPThemeLayoutSetting.Palette);\n const settingThemePallete =\n typeof settingThemePaletteRaw === 'string' && settingThemePaletteRaw.trim().length > 0\n ? settingThemePaletteRaw.trim()\n : 'default';\n patchState(store, { currentPalette: settingThemePallete });\n //\n const settingSideMenu = normalizeSideMenuState(\n await settingsService.get(AXPThemeLayoutSetting.SideMenuStatus),\n store.sideMenuState(),\n );\n patchState(store, { sideMenuState: settingSideMenu });\n //\n const settingMenuOrientation =\n ((await settingsService.get(AXPThemeLayoutSetting.MenuOrientation)) as AXPMenuOrientation) ??\n store.menuOrientation();\n patchState(store, { menuOrientation: settingMenuOrientation });\n //\n const settingMenuVerticalMode = normalizeMenuVerticalMode(\n await settingsService.get(AXPThemeLayoutSetting.MenuVerticalMode),\n store.menuVerticalMode(),\n );\n patchState(store, { menuVerticalMode: settingMenuVerticalMode });\n //\n let menuToggleCyclesStyle = false;\n try {\n menuToggleCyclesStyle = coerceUnknownToBoolean(\n await settingsService.get(AXPThemeLayoutSetting.MenuToggleCyclesStyle),\n );\n } catch {\n menuToggleCyclesStyle = false;\n }\n patchState(store, { menuToggleCyclesStyle });\n //\n let rawMenuAppearance: unknown;\n try {\n rawMenuAppearance = await settingsService.get<unknown>(AXPThemeLayoutSetting.MenuDark);\n } catch {\n rawMenuAppearance = undefined;\n }\n patchState(store, {\n menuAppearance: normalizeMenuAppearance(rawMenuAppearance, 'brand-dark'),\n });\n\n let rawHeaderAppearance: unknown;\n try {\n rawHeaderAppearance = await settingsService.get<unknown>(\n AXPThemeLayoutSetting.HeaderAppearance,\n );\n } catch {\n rawHeaderAppearance = undefined;\n }\n patchState(store, {\n headerAppearance: normalizeHeaderAppearance(rawHeaderAppearance, 'simple'),\n });\n\n let mainFooterFullWidth = false;\n try {\n mainFooterFullWidth =\n (await settingsService.get<boolean>(AXPThemeLayoutSetting.MenuFooterFullWidth)) ?? false;\n } catch {\n mainFooterFullWidth = false;\n }\n patchState(store, { mainFooterFullWidth });\n //\n const fontFamily = await settingsService.get(AXPThemeLayoutSetting.Font);\n const fontSize = await settingsService.get(AXPThemeLayoutSetting.FontSize);\n const language = (await settingsService.get(AXPRegionalSetting.Language)) as string | undefined;\n\n const regionalContext = await resolveRegionalFontScriptContextFromInjector(injector);\n const availableFonts = resolveRegionalFontOptions(regionalContext);\n const effectiveFontFamily = resolveEffectiveFontId(\n fontFamily as string | undefined,\n availableFonts,\n language,\n );\n await injector.get(AXPRegionalFontStyleLoaderService).ensureFontStylesLoaded(effectiveFontFamily);\n\n patchState(store, { font: { family: effectiveFontFamily, size: fontSize } });\n //\n const sideMenuWidth =\n (await settingsService.get<number>(AXPThemeLayoutSetting.SideMenuWidth)) ?? store.sideMenuWidth();\n patchState(store, { sideMenuWidth });\n //\n const sideMenuCompactWidth =\n (await settingsService.get<number>(AXPThemeLayoutSetting.SideMenuCompactWidth)) ??\n store.sideMenuCompactWidth();\n patchState(store, { sideMenuCompactWidth });\n\n await _updateHtmlClass();\n };\n\n // Update HTML class based on theme\n const _updateHtmlClass = async () => {\n const html = document.getElementsByTagName('html')[0];\n //\n const isDark = store.isDarkMode();\n html.classList.toggle('ax-dark', isDark);\n html.style.colorScheme = isDark ? 'dark' : 'light';\n persistThemeBootCache(store.currentMode(), store.currentPalette());\n //\n html.style.fontFamily = resolveFontCssFamily(store.font().family);\n const fontVariation = resolveFontVariationSettings(store.font().family);\n html.style.fontVariationSettings = fontVariation ?? '';\n html.style.fontSize = store.font().size;\n //\n await _applyThemePalette(store.currentPalette());\n };\n\n const _setOverlayLoading = async (value: boolean, delay: number = 0): Promise<void> => {\n if (value) {\n let timeoutId: number | null = null;\n\n if (delay > 0) {\n timeoutId = window.setTimeout(() => {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() + 1 });\n patchState(store, { overlayLoading: true });\n }, delay);\n } else {\n const prevCount = store.overlayLoadingTaskCount();\n patchState(store, { overlayLoadingTaskCount: prevCount + 1 });\n patchState(store, { overlayLoading: true });\n if (prevCount === 0) {\n AXPDebugService.instance?.trace(OVERLAY_LAYOUT_TRACE_NS, 'theme', 'overlay ON', () => ({\n taskCount: prevCount + 1,\n overlayLoading: true,\n note: 'First overlay loading task started',\n }));\n }\n }\n\n // Store timeout ID to clear it if the loading ends before delay\n (store as any)._loadingTimeoutId = timeoutId;\n } else {\n if (store.overlayLoadingTaskCount() > 0) {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() - 1 });\n }\n\n if (store.overlayLoadingTaskCount() === 0) {\n const timeoutId = (store as any)._loadingTimeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n (store as any)._loadingTimeoutId = null;\n }\n\n timer(minimumDisplayTime).subscribe(() => {\n if (store.overlayLoadingTaskCount() === 0) {\n patchState(store, { overlayLoading: false });\n }\n });\n }\n }\n };\n\n const _clearOverlayLoading = () => {\n const prevCount = store.overlayLoadingTaskCount();\n const timeoutId = (store as any)._loadingTimeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n (store as any)._loadingTimeoutId = null;\n }\n\n patchState(store, { overlayLoadingTaskCount: 0, overlayLoading: false });\n\n AXPDebugService.instance?.trace(OVERLAY_LAYOUT_TRACE_NS, 'theme', 'overlay CLEARED (force)', () => ({\n prevTaskCount: prevCount,\n taskCount: 0,\n note: 'Overlay loading force-cleared',\n }));\n };\n\n const _setNavigationLoading = (value: boolean, delay?: number) => {\n if (value) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() + 1 });\n patchState(store, { navigationLoading: true });\n } else {\n if (store.navigationLoadingTaskCount() > 0) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() - 1 });\n }\n if (store.navigationLoadingTaskCount() === 0) {\n timer(minimumDisplayTime).subscribe(() => {\n if (store.navigationLoadingTaskCount() === 0) {\n patchState(store, { navigationLoading: false });\n }\n });\n }\n }\n };\n\n // Helper method to apply a cached theme palette\n const _applyThemePalette = async (name: string): Promise<void> => {\n // TODO: Get the path from the palette provider token\n const path = `/assets/themes/palettes/css/${name}.css`;\n // Check if the current theme is already applied\n const existingStyle = document.querySelector<HTMLStyleElement>(`style[data-theme=\"${name}\"]`);\n if (existingStyle) {\n return; // Theme is already applied, no need to reapply\n }\n\n _setNavigationLoading(true);\n\n try {\n // Fetch the CSS file via HttpClient\n const cssText = await firstValueFrom(\n http.get(path!, { responseType: 'text' }).pipe(timeout({ first: 5_000 })),\n );\n\n // Create a new <style> tag and apply the CSS\n const style = document.createElement('style');\n style.setAttribute('data-theme', name);\n style.textContent = cssText!;\n document.head.appendChild(style);\n\n // Remove any other outdated theme styles\n document.querySelectorAll<HTMLStyleElement>('style[data-theme]').forEach((existing) => {\n if (existing !== style) {\n existing.remove();\n }\n });\n } catch (error) {\n console.error(`Error loading theme CSS:`, error);\n } finally {\n _setNavigationLoading(false);\n }\n };\n\n const minimumDisplayTime = 500; // milliseconds\n\n const setSideMenuOpen = (opened: boolean) => {\n if (!deviceService.isLarge()) {\n patchState(store, { overlaySideMenuOpen: opened });\n return;\n }\n const sideMenuState = opened ? AXPSideMenuState.Opened : AXPSideMenuState.Closed;\n patchState(store, { sideMenuState });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, sideMenuState);\n };\n\n const setMenuVerticalMode = (mode: AXPMenuVerticalMode) => {\n const next = normalizeMenuVerticalMode(mode, store.menuVerticalMode());\n patchState(store, { menuVerticalMode: next });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.MenuVerticalMode, next);\n };\n\n return {\n // Change theme and update HTML class\n changeThemeMode(theme: AXPThemeMode) {\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.Mode, theme);\n patchState(store, { currentMode: theme });\n _updateHtmlClass();\n },\n\n // Open side menu\n openSideMenu() {\n setSideMenuOpen(true);\n },\n\n // Close side menu\n closeSideMenu() {\n setSideMenuOpen(false);\n },\n\n // Set side menu width in full vertical mode\n setSideMenuWidth(width: number) {\n patchState(store, { sideMenuWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);\n },\n\n // Set side menu width in compact vertical mode\n setSideMenuCompactWidth(width: number) {\n patchState(store, { sideMenuCompactWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuCompactWidth, width);\n },\n\n // Persist drawer width for the active vertical menu mode\n setSideMenuDrawerWidth(width: number) {\n if (\n normalizeMenuVerticalMode(store.menuVerticalMode(), AXPMenuVerticalMode.Full) === AXPMenuVerticalMode.Compact\n ) {\n patchState(store, { sideMenuCompactWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuCompactWidth, width);\n } else {\n patchState(store, { sideMenuWidth: width });\n settingsService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);\n }\n },\n\n // Persist vertical rail mode (full labels vs compact icons)\n setMenuVerticalMode,\n\n // Large screens with the setting on: cycle full ↔ compact without hiding.\n // Otherwise: hide/show the drawer (overlay on smaller screens).\n toggleSideMenu() {\n if (!deviceService.isLarge()) {\n setSideMenuOpen(!store.isSideMenuOpen());\n return;\n }\n if (store.menuToggleCyclesStyleEnabled()) {\n if (!store.isSideMenuOpen()) {\n setSideMenuOpen(true);\n return;\n }\n const current = normalizeMenuVerticalMode(\n store.menuVerticalMode(),\n AXPMenuVerticalMode.Full,\n );\n setMenuVerticalMode(\n current === AXPMenuVerticalMode.Compact\n ? AXPMenuVerticalMode.Full\n : AXPMenuVerticalMode.Compact,\n );\n return;\n }\n setSideMenuOpen(!store.isSideMenuOpen());\n },\n\n // Set navigation loading state with a task counter\n setNavigationLoading(value: boolean, delay?: number) {\n _setNavigationLoading(value, delay);\n },\n\n // Set overlay loading state with a task counter\n setOverlayLoading(value: boolean, delay?: number) {\n _setOverlayLoading(value, delay);\n },\n\n /** Resets overlay task count and hides overlay (page-ready / destroy). */\n clearOverlayLoading() {\n _clearOverlayLoading();\n },\n\n async loadSettings() {\n await _applySettings();\n },\n // This is for internal use to react to print mode changes\n _internal_updateHtmlClass: _updateHtmlClass,\n\n // Set up event listener for system theme changes\n _setupSystemColorListener() {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n const listener = (e: MediaQueryListEvent) => {\n patchState(store, { systemThemeMode: e.matches ? AXPThemeMode.Dark : AXPThemeMode.Light });\n _updateHtmlClass();\n };\n mediaQueryList.addEventListener('change', listener);\n return listener;\n },\n\n // Remove event listener for system theme changes\n _removeSystemColorListener(listener: (e: MediaQueryListEvent) => void) {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQueryList.removeEventListener('change', listener);\n },\n };\n }),\n\n // Lifecycle Hooks\n withHooks((store, settingsService = inject(AXPSettingsService), deviceService = inject(AXPDeviceService)) => ({\n onInit() {\n void store['_internal_updateHtmlClass']();\n\n effect(() => {\n if (!deviceService.isLarge()) {\n patchState(store, { overlaySideMenuOpen: false });\n }\n });\n\n settingsService.onChanged\n .pipe(\n filter((c) =>\n [AXPPlatformScope.Platform, AXPPlatformScope.Tenant, AXPPlatformScope.User].includes(c.scope),\n ),\n )\n .subscribe(async (changes) => {\n const keys = Object.values(AXPThemeLayoutSetting);\n const layoutKeysChanged = changes.keys.some((key) => keys.includes(key as AXPThemeLayoutSetting));\n const languageChanged = changes.keys.includes(AXPRegionalSetting.Language);\n\n if (!layoutKeysChanged && !languageChanged) {\n return;\n }\n\n if (languageChanged) {\n await store['loadSettings']();\n return;\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuVerticalMode)) {\n patchState(store, {\n menuVerticalMode: normalizeMenuVerticalMode(\n changes.values[AXPThemeLayoutSetting.MenuVerticalMode],\n store.menuVerticalMode(),\n ),\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuToggleCyclesStyle)) {\n patchState(store, {\n menuToggleCyclesStyle: coerceUnknownToBoolean(\n changes.values[AXPThemeLayoutSetting.MenuToggleCyclesStyle],\n ),\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuDark)) {\n const rawMenuAppearance = changes.values[AXPThemeLayoutSetting.MenuDark] as unknown;\n patchState(store, {\n menuAppearance: normalizeMenuAppearance(rawMenuAppearance, store.menuAppearance()),\n });\n }\n\n if (changes.keys.includes(AXPThemeLayoutSetting.HeaderAppearance)) {\n const rawHeaderAppearance = changes.values[\n AXPThemeLayoutSetting.HeaderAppearance\n ] as unknown;\n patchState(store, {\n headerAppearance: normalizeHeaderAppearance(\n rawHeaderAppearance,\n store.headerAppearance(),\n ),\n });\n }\n\n if (changes.keys.includes(AXPThemeLayoutSetting.MenuFooterFullWidth)) {\n patchState(store, {\n mainFooterFullWidth: changes.values[AXPThemeLayoutSetting.MenuFooterFullWidth] ?? false,\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.SideMenuStatus)) {\n patchState(store, {\n sideMenuState: normalizeSideMenuState(\n changes.values[AXPThemeLayoutSetting.SideMenuStatus],\n store.sideMenuState(),\n ),\n });\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.SideMenuWidth)) {\n const width = changes.values[AXPThemeLayoutSetting.SideMenuWidth];\n if (typeof width === 'number' && Number.isFinite(width)) {\n patchState(store, { sideMenuWidth: width });\n }\n }\n if (changes.keys.includes(AXPThemeLayoutSetting.SideMenuCompactWidth)) {\n const width = changes.values[AXPThemeLayoutSetting.SideMenuCompactWidth];\n if (typeof width === 'number' && Number.isFinite(width)) {\n patchState(store, { sideMenuCompactWidth: width });\n }\n }\n const shouldReloadSettings = changes.keys.some(\n (key) =>\n keys.includes(key as AXPThemeLayoutSetting) &&\n key !== AXPThemeLayoutSetting.MenuVerticalMode &&\n key !== AXPThemeLayoutSetting.MenuToggleCyclesStyle &&\n key !== AXPThemeLayoutSetting.MenuDark &&\n key !== AXPThemeLayoutSetting.HeaderAppearance &&\n key !== AXPThemeLayoutSetting.MenuFooterFullWidth &&\n key !== AXPThemeLayoutSetting.SideMenuStatus &&\n key !== AXPThemeLayoutSetting.SideMenuWidth &&\n key !== AXPThemeLayoutSetting.SideMenuCompactWidth,\n );\n if (shouldReloadSettings) {\n await store['loadSettings']();\n }\n });\n //\n settingsService.onLoaded.subscribe(async () => {\n await store['loadSettings']();\n });\n\n // Set up event listener for system theme changes\n const listener = store['_setupSystemColorListener']();\n patchState(store, { _listener: listener });\n\n window.addEventListener('beforeprint', () => {\n patchState(store, { isPrinting: true });\n (store as any)._internal_updateHtmlClass();\n });\n window.addEventListener('afterprint', () => {\n patchState(store, { isPrinting: false });\n (store as any)._internal_updateHtmlClass();\n });\n },\n\n onDestroy() {\n // Clean up event listeners when store is destroyed\n const { _listener: listener } = store;\n if (listener) {\n store['_removeSystemColorListener'](listener);\n }\n },\n })),\n);","import { AXPDeviceService } from '@acorex-platform/framework-client/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPLayoutThemeService } from '../theme.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeMode } from '../contracts/theme.types';\n\n@Component({\n template: `\n @if (!deviceService.isSmall()) {\n <ax-button [iconOnly]=\"true\" [color]=\"store.headerButtonColor()\" [look]=\"store.headerButtonLook()\">\n <ax-icon>\n <i\n class=\"fa-regular\"\n [ngClass]=\"{\n 'fa-desktop': store.isSystemMode(),\n 'fa-moon': !store.isSystemMode() && store.isDarkMode(),\n 'fa-brightness': !store.isSystemMode() && !store.isDarkMode(),\n }\"\n ></i>\n </ax-icon>\n <ax-dropdown-panel *translate=\"let t\">\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Light)\"\n [text]=\"('@layout:terms.theme-modes.light' | translate | async)!\"\n [selected]=\"!store.isSystemMode() && !store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-brightness\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Dark)\"\n [text]=\"('@layout:terms.theme-modes.dark' | translate | async)!\"\n [selected]=\"!store.isSystemMode() && store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-moon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.System)\"\n [text]=\"('@layout:terms.theme-modes.system' | translate | async)!\"\n [selected]=\"store.isSystemMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-desktop\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n `,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXTranslationModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPThemeSlotComponent {\n protected store = inject(AXPLayoutThemeService);\n protected readonly deviceService = inject(AXPDeviceService);\n\n protected variants = AXPThemeMode;\n}\n","import { InjectionToken } from '@angular/core';\nimport { AXPThemePalette } from './contracts/theme.types';\n\nexport interface AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]>;\n}\n\nexport const AXP_THEME_PALETTE_PROVIDER = new InjectionToken<Promise<AXPThemePaletteProvider>>('AXP_THEME_PALETTE_PROVIDER', {\n providedIn: 'root',\n factory: async () => {\n return new AXPThemePaletteProviderDefault();\n },\n});\n\nexport class AXPThemePaletteProviderDefault implements AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]> {\n return Promise.resolve([\n {\n name: 'default',\n title: 'Default',\n path: '/assets/themes/palletes/default.css',\n colors: {\n primary: '#113b53',\n secondary: '#1a6ab1',\n neutral: '#606c76',\n success: '#2d9c67',\n warning: '#e9a01b',\n danger: '#c02f1d',\n accents: ['#d6a7a6', '#a0897e', '#8bf4d9'],\n dark: '#2a2d30',\n light: '#ffffff',\n },\n },\n\n ]);\n }\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './settings.keys';\nexport * from './theme.types';\nexport * from './theme-boot.util';\n\n//#endregion\n","import { InjectionToken } from '@angular/core';\nimport { AXPIconProvider, AXPIconStyleProvider } from './icon-chooser.service';\n\n//#region ---- Injection Tokens ----\n\n/**\n * Injection token for icon providers.\n * Use multi: true to register multiple providers.\n */\nexport const AXP_ICON_PROVIDER = new InjectionToken<AXPIconProvider[]>('AXP_ICON_PROVIDER');\n\n/**\n * Injection token for icon style providers.\n * Use multi: true to register multiple providers.\n */\nexport const AXP_ICON_STYLE_PROVIDER = new InjectionToken<AXPIconStyleProvider[]>('AXP_ICON_STYLE_PROVIDER');\n\n//#endregion\n\n","import { inject, Injectable } from '@angular/core';\nimport { AXP_ICON_PROVIDER, AXP_ICON_STYLE_PROVIDER } from './icon-chooser.token';\n\n//#region ---- Interfaces ----\n\nexport interface AXPFontAwesomeIcon {\n name: string;\n label: string;\n tags?: string[];\n supportedStyle?: string[];\n}\n\nexport interface AXPFontAwesomeIconStyle {\n name: string;\n label: string;\n}\n\nexport interface AXPFontAwesomeIconData {\n label?: string;\n styleClass: string;\n iconClass: string;\n}\n\n//#endregion\n\n//#region ---- Abstract Providers ----\n\nexport abstract class AXPIconProvider {\n abstract provide(): Promise<AXPFontAwesomeIcon[]>;\n}\n\nexport abstract class AXPIconStyleProvider {\n abstract provide(): Promise<AXPFontAwesomeIconStyle[]>;\n}\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXPIconChooserService {\n\n //#region ---- Properties ----\n\n private iconProviders = inject(AXP_ICON_PROVIDER, { optional: true }) ?? [];\n private styleProviders = inject(AXP_ICON_STYLE_PROVIDER, { optional: true }) ?? [];\n\n private iconsCache: AXPFontAwesomeIcon[] | null = null;\n private stylesCache: AXPFontAwesomeIconStyle[] | null = null;\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Get all available icon styles from registered providers.\n * Results are cached after first call.\n */\n async getStyles(): Promise<AXPFontAwesomeIconStyle[]> {\n if (this.stylesCache) {\n return this.stylesCache;\n }\n\n const allStyles: AXPFontAwesomeIconStyle[] = [];\n\n for (const provider of this.styleProviders) {\n const result = await provider.provide();\n allStyles.push(...result);\n }\n\n // Remove duplicates based on style name\n const uniqueStyles = allStyles.filter(\n (style, index, self) => index === self.findIndex((s) => s.name === style.name),\n );\n\n this.stylesCache = uniqueStyles;\n return uniqueStyles;\n }\n\n /**\n * Get all available icons from registered providers.\n * Icons from multiple providers are merged, with duplicates removed.\n * Results are cached after first call.\n */\n async getIcons(): Promise<AXPFontAwesomeIcon[]> {\n if (this.iconsCache) {\n return this.iconsCache;\n }\n\n const allIcons: AXPFontAwesomeIcon[] = [];\n\n for (const provider of this.iconProviders) {\n const result = await provider.provide();\n allIcons.push(...result);\n }\n\n // Remove duplicates based on icon name, keeping first occurrence\n const uniqueIcons = allIcons.filter((icon, index, self) => index === self.findIndex((i) => i.name === icon.name));\n\n this.iconsCache = uniqueIcons;\n return uniqueIcons;\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, OnInit } from '@angular/core';\nimport { AXPFontAwesomeIcon, AXPFontAwesomeIconStyle, AXPIconChooserService } from './icon-chooser.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\n@Component({\n template: `\n <div class=\"flex flex-col h-full bg-lightest\">\n <!-- Fixed Header Section -->\n <div class=\"sticky top-0 z-10 bg-lightest border-b p-4 gap-4 flex flex-col\">\n <!-- Search Bar -->\n <div class=\"flex justify-center\">\n <ax-search-box\n class=\"w-full\"\n (onValueChanged)=\"handleSearch($event)\"\n [placeholder]=\"'@general:widgets.icon-chooser.search-placeholder' | translate | async\"\n ></ax-search-box>\n </div>\n\n <!-- Controls Row -->\n <div class=\"flex justify-between items-center flex-wrap gap-2\">\n <!-- Icon Style Filter -->\n <ax-button-group selection=\"single\" look=\"outline\">\n @for (item of iconTypes; track item.name) {\n <ax-button-group-item\n [text]=\"item.label\"\n [selected]=\"item.name === selectedIconType\"\n (onClick)=\"handleIconTypeChange(item)\"\n >\n </ax-button-group-item>\n }\n </ax-button-group>\n\n <!-- View Mode Toggle -->\n <ax-button-group selection=\"single\" look=\"outline\">\n @for (item of viewModes; track item.value) {\n <ax-button-group-item\n [title]=\"item.text | translate | async\"\n [selected]=\"item.value === selectedViewMode\"\n (onClick)=\"handleViewModeChange(item)\"\n >\n <ax-icon [class]=\"item.icon\"></ax-icon>\n </ax-button-group-item>\n }\n </ax-button-group>\n </div>\n </div>\n\n <!-- Scrollable Content Area -->\n <div class=\"flex-1 overflow-y-auto p-4 pt-2\">\n <div\n class=\"grid gap-1\"\n [ngClass]=\"\n selectedViewMode === 'square'\n ? 'grid-cols-[repeat(auto-fill,minmax(6rem,1fr))]'\n : 'grid-cols-1 md:grid-cols-2'\n \"\n >\n @for (icon of filteredIcons; track icon) {\n <div\n class=\"p-4 border border-transparent rounded-lg flex items-center justify-center gap-2 cursor-pointer transition-all duration-200 ease-in-out hover:border-primary hover:shadow-md\"\n [ngClass]=\"{\n 'flex-col': selectedViewMode === 'square',\n 'flex-row justify-start': selectedViewMode === 'rectangle',\n }\"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"getIconClass(icon) + ' text-3xl'\"></i>\n <span\n class=\"text-xs w-full overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'text-center': selectedViewMode === 'square',\n 'text-left': selectedViewMode === 'rectangle',\n }\"\n >{{ icon.label }}</span\n >\n </div>\n }\n </div>\n </div>\n </div>\n `,\n imports: [AXSearchBoxModule, AXButtonGroupModule, CommonModule, AXDecoratorModule, AXTranslationModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPIconChooserPopupComponent extends AXBasePageComponent implements OnInit {\n @Input() value: string | undefined;\n\n icons: AXPFontAwesomeIcon[] = [];\n filteredIcons: AXPFontAwesomeIcon[] = [];\n searchQuery: string = '';\n viewModes = [\n { value: 'square', text: '@general:widgets.icon-chooser.view-mode.square', icon: 'fa-solid fa-border-all' },\n {\n value: 'rectangle',\n text: '@general:widgets.icon-chooser.view-mode.rectangle',\n icon: 'fa-solid fa-list',\n },\n ];\n selectedViewMode = 'square';\n iconTypes: AXPFontAwesomeIconStyle[] = [];\n selectedIconType: string = 'fa-solid';\n\n private popupService = inject(AXPIconChooserService);\n\n override async ngOnInit() {\n this.iconTypes = await this.popupService.getStyles();\n this.icons = await this.popupService.getIcons();\n this.applyFilters();\n this.cdr.detectChanges();\n }\n\n handleSearch(event: any) {\n this.searchQuery = event.value?.toLowerCase();\n this.applyFilters();\n }\n\n handleViewModeChange(mode: any) {\n this.selectedViewMode = mode.value;\n }\n\n handleIconTypeChange(type: AXPFontAwesomeIconStyle) {\n this.selectedIconType = type.name;\n this.applyFilters();\n }\n\n applyFilters() {\n let result = this.icons;\n\n if (this.searchQuery) {\n result = result.filter(\n (icon) =>\n icon.label.toLowerCase().includes(this.searchQuery) ||\n icon.tags?.some((tag) => tag.toLowerCase().includes(this.searchQuery)),\n );\n }\n\n result = result.filter((icon) => {\n if (!icon.supportedStyle || icon.supportedStyle.length === 0) {\n return true;\n }\n return icon.supportedStyle.includes(this.selectedIconType);\n });\n\n this.filteredIcons = result;\n }\n\n selectIcon(icon: AXPFontAwesomeIcon) {\n this.close({\n label: icon.label,\n styleClass: this.selectedIconType,\n iconClass: `fa-${icon.name}`,\n });\n }\n\n getIconClass(icon: AXPFontAwesomeIcon): string {\n return `${this.selectedIconType} fa-${icon.name}`;\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { AXPIconChooserPopupComponent } from './icon-chooser-popup.component';\nimport { AXPFontAwesomeIconData } from './icon-chooser.service';\n\n@Component({\n selector: 'ax-icon-chooser-edit',\n template: `\n <div\n class=\"grid grid-cols-[6rem_auto] items-center rounded-md text-3xl w-fit\"\n [class.border]=\"getValue()\"\n >\n <!-- Left: Add or Selected Icon -->\n <div\n class=\"grid place-items-center w-24 h-24\"\n [class]=\"getValue() ? 'border-e cursor-default' : 'icon-container cursor-pointer'\"\n (click)=\"addIcon()\"\n >\n <i [class]=\"getValue() ? computedValue().styleClass + ' ' + computedValue().iconClass : 'fa-solid fa-plus'\"></i>\n </div>\n\n <!-- Right: Edit & Delete (only if value exists) -->\n @if (getValue()) {\n <div class=\"flex flex-col w-16 text-2xl\">\n <div class=\"h-12 grid place-items-center cursor-pointer hover:bg-surface\" (click)=\"editIcon()\">\n <i class=\"fa-light fa-edit text-primary-400\"></i>\n </div>\n <div\n class=\"h-12 grid place-items-center cursor-pointer border-t hover:bg-surface\"\n (click)=\"deleteIcon()\"\n >\n <i class=\"fa-light fa-trash-can text-danger-400\"></i>\n </div>\n </div>\n }\n </div>\n `,\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n .icon-container {\n background-color: theme('colors.primary.300 / 10%');\n background-image: linear-gradient(\n 135deg,\n theme('colors.primary.300 / 50%') 10%,\n transparent 0,\n transparent 50%,\n theme('colors.primary.300 / 50%') 0,\n theme('colors.primary.300 / 50%') 60%,\n transparent 0,\n transparent\n );\n background-size: 7.5px 7.5px;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPIconChooserWidgetEditComponent extends AXPValueWidgetComponent<AXPFontAwesomeIconData | string> {\n private popupService = inject(AXPopupService);\n\n public computedValue = computed<AXPFontAwesomeIconData>(() => {\n const value = this.getValue();\n if (typeof value === 'string') {\n const parts = value.split(' ');\n if (parts.length === 1) {\n return { styleClass: 'fa-solid', iconClass: parts[0] };\n } else if (parts.length === 2) {\n return { styleClass: parts[0], iconClass: parts[1] };\n } else {\n throw new Error(`Invalid icon format: \"${value}\". Expected format: \"icon-class\" or \"style-class icon-class\"`);\n }\n }\n return value;\n });\n\n public async openPopup() {\n const result = await this.popupService.open(AXPIconChooserPopupComponent, {\n title: 'Choose Icon',\n size: 'md',\n data: {\n value: this.getValue(),\n },\n });\n if (result?.data) {\n this.setValue(result.data.styleClass + ' ' + result.data.iconClass);\n }\n }\n\n public addIcon() {\n if (!this.getValue()) {\n this.openPopup();\n }\n }\n public deleteIcon() {\n this.setValue(undefined);\n }\n public editIcon() {\n this.openPopup();\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPIconChooserWidget: AXPWidgetConfig = {\n name: 'icon-chooser',\n title: 'Icon Chooser',\n icon: 'fa-light fa-icons',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () => import('./icon-chooser-edit.component').then((c) => c.AXPIconChooserWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./icon-chooser-column.component').then((c) => c.AXPIconChooserWidgetColumnComponent),\n },\n view: {\n component: () => import('./icon-chooser-view.component').then((c) => c.AXPIconChooserWidgetViewComponent),\n },\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n iconChooser: 'icon-chooser';\n }\n}\n","import { AXPIconProvider, AXPIconStyleProvider, AXPFontAwesomeIcon, AXPFontAwesomeIconStyle } from './icon-chooser.service';\n\n//#region ---- Default Icon Styles ----\n\nconst DEFAULT_ICON_STYLES: AXPFontAwesomeIconStyle[] = [\n { name: 'fa-regular', label: 'Regular' },\n { name: 'fa-solid', label: 'Solid' },\n];\n\n//#endregion\n\n//#region ---- Default Icons ----\n\nconst DEFAULT_ICONS: AXPFontAwesomeIcon[] = [\n // Navigation & Actions\n { name: 'house', label: 'House', tags: ['home', 'building', 'house'] },\n { name: 'magnifying-glass', label: 'Search', tags: ['find', 'zoom'] },\n { name: 'user', label: 'User', tags: ['person', 'account'] },\n { name: 'users', label: 'Users', tags: ['people', 'group', 'team'] },\n { name: 'user-group', label: 'User Group', tags: ['team', 'group', 'people'] },\n { name: 'check', label: 'Check', tags: ['confirm', 'done', 'tick'] },\n { name: 'check-circle', label: 'Check Circle', tags: ['confirm', 'success', 'done'] },\n { name: 'check-double', label: 'Check Double', tags: ['verified', 'confirmed'] },\n { name: 'xmark', label: 'Close', tags: ['cancel', 'exit', 'remove'] },\n { name: 'circle-xmark', label: 'Circle Close', tags: ['cancel', 'error', 'remove'] },\n { name: 'plus', label: 'Add', tags: ['create', 'new', 'plus'] },\n { name: 'circle-plus', label: 'Circle Plus', tags: ['add', 'create', 'new'] },\n { name: 'minus', label: 'Remove', tags: ['delete', 'subtract', 'minus'] },\n { name: 'circle-minus', label: 'Circle Minus', tags: ['remove', 'subtract'] },\n { name: 'edit', label: 'Edit', tags: ['modify', 'change', 'pencil'] },\n { name: 'pen-to-square', label: 'Edit Square', tags: ['edit', 'modify', 'write'] },\n { name: 'trash', label: 'Delete', tags: ['remove', 'delete', 'bin'] },\n { name: 'trash-can', label: 'Trash Can', tags: ['delete', 'remove', 'garbage'] },\n { name: 'copy', label: 'Copy', tags: ['duplicate', 'clone'] },\n { name: 'clone', label: 'Clone', tags: ['duplicate', 'copy'] },\n { name: 'download', label: 'Download', tags: ['save', 'export'] },\n { name: 'upload', label: 'Upload', tags: ['import', 'send'] },\n { name: 'print', label: 'Print', tags: ['printer', 'document'] },\n { name: 'share', label: 'Share', tags: ['send', 'distribute'] },\n { name: 'share-nodes', label: 'Share Network', tags: ['share', 'distribute', 'network'] },\n { name: 'link', label: 'Link', tags: ['url', 'connection'] },\n { name: 'link-slash', label: 'Unlink', tags: ['disconnect', 'remove'] },\n { name: 'external-link', label: 'External Link', tags: ['open', 'external'] },\n { name: 'arrows-rotate', label: 'Refresh', tags: ['reload', 'sync', 'update'] },\n { name: 'rotate-right', label: 'Rotate Right', tags: ['refresh', 'reload'] },\n { name: 'arrows-left-right', label: 'Arrows Horizontal', tags: ['swap', 'exchange'] },\n { name: 'arrow-up', label: 'Arrow Up', tags: ['up', 'direction'] },\n { name: 'arrow-down', label: 'Arrow Down', tags: ['down', 'direction'] },\n { name: 'arrow-left', label: 'Arrow Left', tags: ['left', 'back', 'previous'] },\n { name: 'arrow-right', label: 'Arrow Right', tags: ['right', 'forward', 'next'] },\n { name: 'chevron-up', label: 'Chevron Up', tags: ['up', 'collapse'] },\n { name: 'chevron-down', label: 'Chevron Down', tags: ['down', 'expand'] },\n { name: 'chevron-left', label: 'Chevron Left', tags: ['left', 'previous'] },\n { name: 'chevron-right', label: 'Chevron Right', tags: ['right', 'next'] },\n { name: 'angle-up', label: 'Angle Up', tags: ['up', 'caret'] },\n { name: 'angle-down', label: 'Angle Down', tags: ['down', 'caret'] },\n { name: 'angle-left', label: 'Angle Left', tags: ['left', 'caret'] },\n { name: 'angle-right', label: 'Angle Right', tags: ['right', 'caret'] },\n { name: 'bars', label: 'Menu', tags: ['hamburger', 'menu', 'navigation'] },\n { name: 'ellipsis', label: 'Ellipsis', tags: ['more', 'options', 'menu'] },\n { name: 'ellipsis-vertical', label: 'Ellipsis Vertical', tags: ['more', 'options', 'menu'] },\n { name: 'grip', label: 'Grip', tags: ['drag', 'handle', 'move'] },\n { name: 'grip-vertical', label: 'Grip Vertical', tags: ['drag', 'handle', 'move'] },\n { name: 'filter', label: 'Filter', tags: ['sort', 'search', 'refine'] },\n { name: 'sliders', label: 'Settings', tags: ['adjust', 'options', 'preferences'] },\n\n // Media & Files\n { name: 'star', label: 'Star', tags: ['favorite', 'rate'] },\n { name: 'star-half', label: 'Star Half', tags: ['rating', 'half'] },\n { name: 'heart', label: 'Heart', tags: ['love', 'like', 'favorite'] },\n { name: 'heart-pulse', label: 'Heart Pulse', tags: ['health', 'medical', 'heartbeat'] },\n { name: 'cloud', label: 'Cloud', tags: ['weather', 'sky', 'storage'] },\n { name: 'cloud-arrow-up', label: 'Cloud Upload', tags: ['upload', 'backup', 'save'] },\n { name: 'cloud-arrow-down', label: 'Cloud Download', tags: ['download', 'restore'] },\n { name: 'envelope', label: 'Envelope', tags: ['mail', 'message', 'email'] },\n { name: 'envelope-open', label: 'Envelope Open', tags: ['mail', 'read', 'message'] },\n { name: 'paper-plane', label: 'Send', tags: ['send', 'message', 'email'] },\n { name: 'folder', label: 'Folder', tags: ['directory', 'files'] },\n { name: 'folder-open', label: 'Folder Open', tags: ['directory', 'files', 'open'] },\n { name: 'folder-plus', label: 'New Folder', tags: ['create', 'directory', 'add'] },\n { name: 'folder-tree', label: 'Folder Tree', tags: ['structure', 'hierarchy', 'files'] },\n { name: 'gear', label: 'Gear', tags: ['settings', 'options', 'config'] },\n { name: 'gears', label: 'Gears', tags: ['settings', 'configuration', 'system'] },\n { name: 'camera', label: 'Camera', tags: ['photo', 'image', 'picture'] },\n { name: 'camera-retro', label: 'Camera Retro', tags: ['photo', 'vintage'] },\n { name: 'video', label: 'Video', tags: ['film', 'movie', 'camera'] },\n { name: 'video-slash', label: 'Video Off', tags: ['disabled', 'mute', 'off'] },\n { name: 'music', label: 'Music', tags: ['sound', 'audio', 'song'] },\n { name: 'file', label: 'File', tags: ['document', 'file'] },\n { name: 'file-lines', label: 'File Text', tags: ['document', 'text'] },\n { name: 'file-pdf', label: 'PDF', tags: ['document', 'pdf'] },\n { name: 'file-word', label: 'Word Document', tags: ['document', 'word', 'doc'] },\n { name: 'file-excel', label: 'Excel', tags: ['spreadsheet', 'excel', 'xls'] },\n { name: 'file-powerpoint', label: 'PowerPoint', tags: ['presentation', 'powerpoint', 'ppt'] },\n { name: 'file-image', label: 'Image File', tags: ['picture', 'photo', 'image'] },\n { name: 'file-video', label: 'Video File', tags: ['movie', 'clip', 'video'] },\n { name: 'file-audio', label: 'Audio File', tags: ['sound', 'music', 'audio'] },\n { name: 'file-code', label: 'Code File', tags: ['code', 'programming', 'source'] },\n { name: 'file-zipper', label: 'Archive', tags: ['zip', 'compressed', 'archive'] },\n { name: 'file-csv', label: 'CSV File', tags: ['spreadsheet', 'data', 'csv'] },\n { name: 'image', label: 'Image', tags: ['picture', 'photo'] },\n { name: 'images', label: 'Images', tags: ['gallery', 'photos', 'pictures'] },\n { name: 'photo-film', label: 'Photo Film', tags: ['gallery', 'images', 'media'] },\n { name: 'microphone', label: 'Microphone', tags: ['audio', 'voice', 'record'] },\n { name: 'microphone-slash', label: 'Microphone Off', tags: ['mute', 'audio', 'off'] },\n { name: 'volume-high', label: 'Volume High', tags: ['sound', 'audio', 'loud'] },\n { name: 'volume-low', label: 'Volume Low', tags: ['sound', 'audio', 'quiet'] },\n { name: 'volume-xmark', label: 'Mute', tags: ['mute', 'silent', 'off'] },\n\n // Communication & Social\n { name: 'phone', label: 'Phone', tags: ['call', 'telephone', 'contact'] },\n { name: 'phone-flip', label: 'Phone Flip', tags: ['call', 'mobile', 'flip'] },\n { name: 'mobile', label: 'Mobile', tags: ['cell', 'smartphone', 'phone'] },\n { name: 'mobile-screen', label: 'Mobile Screen', tags: ['smartphone', 'device'] },\n { name: 'fax', label: 'Fax', tags: ['document', 'send', 'print'] },\n { name: 'comment', label: 'Comment', tags: ['message', 'chat', 'text'] },\n { name: 'comments', label: 'Comments', tags: ['messages', 'discussion', 'chat'] },\n { name: 'comment-dots', label: 'Comment Typing', tags: ['message', 'typing', 'chat'] },\n { name: 'message', label: 'Message', tags: ['chat', 'text', 'communication'] },\n { name: 'inbox', label: 'Inbox', tags: ['mail', 'messages', 'receive'] },\n { name: 'at', label: 'At Symbol', tags: ['email', 'mention', 'tag'] },\n { name: 'hashtag', label: 'Hashtag', tags: ['tag', 'social', 'topic'] },\n { name: 'thumbs-up', label: 'Like', tags: ['approve', 'good', 'positive'] },\n { name: 'thumbs-down', label: 'Dislike', tags: ['disapprove', 'bad', 'negative'] },\n { name: 'bell', label: 'Notification', tags: ['alert', 'reminder', 'notification'] },\n { name: 'bell-slash', label: 'Notifications Off', tags: ['mute', 'silent', 'off'] },\n { name: 'flag', label: 'Flag', tags: ['mark', 'report', 'bookmark'] },\n { name: 'flag-checkered', label: 'Flag Checkered', tags: ['finish', 'end', 'goal'] },\n { name: 'bookmark', label: 'Bookmark', tags: ['save', 'favorite', 'mark'] },\n { name: 'calendar', label: 'Calendar', tags: ['date', 'schedule', 'event'] },\n { name: 'calendar-days', label: 'Calendar Days', tags: ['date', 'month', 'schedule'] },\n { name: 'calendar-check', label: 'Calendar Check', tags: ['event', 'confirmed', 'scheduled'] },\n { name: 'calendar-plus', label: 'Calendar Add', tags: ['event', 'create', 'schedule'] },\n { name: 'clock', label: 'Clock', tags: ['time', 'schedule', 'hour'] },\n { name: 'hourglass', label: 'Hourglass', tags: ['time', 'waiting', 'timer'] },\n { name: 'stopwatch', label: 'Stopwatch', tags: ['timer', 'time', 'track'] },\n { name: 'rss', label: 'RSS', tags: ['feed', 'news', 'subscribe'] },\n\n // Business & Finance\n { name: 'chart-line', label: 'Chart Line', tags: ['graph', 'analytics', 'trending'] },\n { name: 'chart-bar', label: 'Bar Chart', tags: ['graph', 'statistics', 'data'] },\n { name: 'chart-pie', label: 'Pie Chart', tags: ['graph', 'percentage', 'data'] },\n { name: 'chart-area', label: 'Area Chart', tags: ['graph', 'analytics', 'data'] },\n { name: 'chart-column', label: 'Column Chart', tags: ['graph', 'statistics'] },\n { name: 'chart-simple', label: 'Simple Chart', tags: ['graph', 'data', 'analytics'] },\n { name: 'calculator', label: 'Calculator', tags: ['math', 'compute', 'calculate'] },\n { name: 'percent', label: 'Percent', tags: ['percentage', 'discount', 'rate'] },\n { name: 'dollar-sign', label: 'Dollar', tags: ['money', 'currency', 'usd'] },\n { name: 'euro-sign', label: 'Euro', tags: ['money', 'currency', 'eur'] },\n { name: 'sterling-sign', label: 'Pound', tags: ['money', 'currency', 'gbp'] },\n { name: 'yen-sign', label: 'Yen', tags: ['money', 'currency', 'jpy'] },\n { name: 'coins', label: 'Coins', tags: ['money', 'cash', 'currency'] },\n { name: 'money-bill', label: 'Money Bill', tags: ['cash', 'currency', 'payment'] },\n { name: 'wallet', label: 'Wallet', tags: ['money', 'payment', 'cash'] },\n { name: 'credit-card', label: 'Credit Card', tags: ['payment', 'card', 'bank'] },\n { name: 'money-check', label: 'Check', tags: ['payment', 'bank', 'check'] },\n { name: 'receipt', label: 'Receipt', tags: ['bill', 'invoice', 'payment'] },\n { name: 'file-invoice', label: 'Invoice', tags: ['bill', 'receipt', 'document'] },\n { name: 'file-invoice-dollar', label: 'Invoice Dollar', tags: ['bill', 'payment', 'money'] },\n { name: 'briefcase', label: 'Briefcase', tags: ['business', 'work', 'professional'] },\n { name: 'suitcase', label: 'Suitcase', tags: ['travel', 'business', 'luggage'] },\n { name: 'building', label: 'Building', tags: ['office', 'company', 'business'] },\n { name: 'building-columns', label: 'Bank', tags: ['bank', 'government', 'institution'] },\n { name: 'store', label: 'Store', tags: ['shop', 'retail', 'business'] },\n { name: 'handshake', label: 'Handshake', tags: ['agreement', 'partnership', 'deal'] },\n { name: 'scale-balanced', label: 'Balance', tags: ['law', 'justice', 'legal'] },\n { name: 'gavel', label: 'Gavel', tags: ['law', 'court', 'legal'] },\n\n // Technology & Tools\n { name: 'laptop', label: 'Laptop', tags: ['computer', 'notebook', 'device'] },\n { name: 'laptop-code', label: 'Laptop Code', tags: ['programming', 'development'] },\n { name: 'desktop', label: 'Desktop', tags: ['computer', 'monitor', 'screen'] },\n { name: 'tablet', label: 'Tablet', tags: ['ipad', 'device', 'mobile'] },\n { name: 'tablet-screen-button', label: 'Tablet Button', tags: ['device', 'touch'] },\n { name: 'keyboard', label: 'Keyboard', tags: ['input', 'typing', 'keys'] },\n { name: 'mouse', label: 'Mouse', tags: ['pointer', 'click', 'input'] },\n { name: 'display', label: 'Display', tags: ['monitor', 'screen', 'computer'] },\n { name: 'wifi', label: 'WiFi', tags: ['internet', 'connection', 'wireless'] },\n { name: 'ethernet', label: 'Ethernet', tags: ['network', 'connection', 'cable'] },\n { name: 'signal', label: 'Signal', tags: ['network', 'connection', 'wifi'] },\n { name: 'network-wired', label: 'Network', tags: ['connection', 'lan', 'ethernet'] },\n { name: 'database', label: 'Database', tags: ['data', 'storage', 'sql'] },\n { name: 'hard-drive', label: 'Hard Drive', tags: ['storage', 'disk', 'hdd'] },\n { name: 'server', label: 'Server', tags: ['hosting', 'backend', 'computer'] },\n { name: 'memory', label: 'Memory', tags: ['ram', 'chip', 'hardware'] },\n { name: 'microchip', label: 'Microchip', tags: ['chip', 'processor', 'cpu'] },\n { name: 'code', label: 'Code', tags: ['programming', 'development', 'coding'] },\n { name: 'code-branch', label: 'Git Branch', tags: ['version', 'git', 'branch'] },\n { name: 'code-commit', label: 'Commit', tags: ['git', 'version', 'save'] },\n { name: 'code-merge', label: 'Merge', tags: ['git', 'branch', 'combine'] },\n { name: 'code-pull-request', label: 'Pull Request', tags: ['git', 'pr', 'review'] },\n { name: 'terminal', label: 'Terminal', tags: ['console', 'command', 'cli'] },\n { name: 'window-maximize', label: 'Maximize', tags: ['window', 'expand', 'fullscreen'] },\n { name: 'window-minimize', label: 'Minimize', tags: ['window', 'collapse'] },\n { name: 'window-restore', label: 'Restore', tags: ['window', 'resize'] },\n { name: 'bug', label: 'Bug', tags: ['error', 'debug', 'issue'] },\n { name: 'wrench', label: 'Wrench', tags: ['tools', 'settings', 'fix'] },\n { name: 'screwdriver-wrench', label: 'Tools', tags: ['repair', 'fix', 'settings'] },\n { name: 'hammer', label: 'Hammer', tags: ['tool', 'build', 'construct'] },\n { name: 'shield', label: 'Shield', tags: ['security', 'protection', 'defense'] },\n { name: 'shield-halved', label: 'Shield Half', tags: ['security', 'protection'] },\n { name: 'lock', label: 'Lock', tags: ['security', 'private', 'secure'] },\n { name: 'lock-open', label: 'Lock Open', tags: ['unlocked', 'open'] },\n { name: 'unlock', label: 'Unlock', tags: ['open', 'access', 'unlock'] },\n { name: 'key', label: 'Key', tags: ['access', 'password', 'security'] },\n { name: 'user-lock', label: 'User Lock', tags: ['security', 'private', 'protected'] },\n { name: 'user-shield', label: 'User Shield', tags: ['security', 'protected', 'admin'] },\n { name: 'qrcode', label: 'QR Code', tags: ['code', 'scan', 'barcode'] },\n { name: 'barcode', label: 'Barcode', tags: ['scan', 'code', 'product'] },\n\n // Transportation & Location\n { name: 'car', label: 'Car', tags: ['vehicle', 'automobile', 'transport'] },\n { name: 'car-side', label: 'Car Side', tags: ['vehicle', 'automobile'] },\n { name: 'taxi', label: 'Taxi', tags: ['cab', 'transport', 'vehicle'] },\n { name: 'bus', label: 'Bus', tags: ['transport', 'public', 'vehicle'] },\n { name: 'van-shuttle', label: 'Van', tags: ['transport', 'vehicle'] },\n { name: 'truck', label: 'Truck', tags: ['vehicle', 'delivery', 'transport'] },\n { name: 'truck-fast', label: 'Fast Delivery', tags: ['shipping', 'express', 'delivery'] },\n { name: 'motorcycle', label: 'Motorcycle', tags: ['bike', 'vehicle', 'transport'] },\n { name: 'plane', label: 'Plane', tags: ['aircraft', 'travel', 'flight'] },\n { name: 'plane-departure', label: 'Departure', tags: ['flight', 'travel', 'takeoff'] },\n { name: 'plane-arrival', label: 'Arrival', tags: ['flight', 'travel', 'landing'] },\n { name: 'helicopter', label: 'Helicopter', tags: ['aircraft', 'flight'] },\n { name: 'rocket', label: 'Rocket', tags: ['space', 'launch', 'fast'] },\n { name: 'train', label: 'Train', tags: ['railway', 'transport', 'travel'] },\n { name: 'subway', label: 'Subway', tags: ['metro', 'underground', 'transport'] },\n { name: 'ship', label: 'Ship', tags: ['boat', 'vessel', 'water'] },\n { name: 'anchor', label: 'Anchor', tags: ['ship', 'marine', 'boat'] },\n { name: 'bicycle', label: 'Bicycle', tags: ['bike', 'cycle', 'transport'] },\n { name: 'road', label: 'Road', tags: ['street', 'path', 'route'] },\n { name: 'map', label: 'Map', tags: ['location', 'navigation', 'directions'] },\n { name: 'map-location', label: 'Map Location', tags: ['pin', 'marker', 'place'] },\n { name: 'map-pin', label: 'Location Pin', tags: ['pin', 'marker', 'place'] },\n { name: 'location-dot', label: 'Location', tags: ['pin', 'marker', 'gps'] },\n { name: 'location-crosshairs', label: 'GPS', tags: ['location', 'position', 'gps'] },\n { name: 'route', label: 'Route', tags: ['directions', 'path', 'navigation'] },\n { name: 'globe', label: 'Globe', tags: ['world', 'earth', 'global'] },\n { name: 'earth-americas', label: 'Americas', tags: ['world', 'global', 'earth'] },\n { name: 'earth-europe', label: 'Europe', tags: ['world', 'global', 'earth'] },\n { name: 'earth-asia', label: 'Asia', tags: ['world', 'global', 'earth'] },\n { name: 'compass', label: 'Compass', tags: ['direction', 'navigation', 'north'] },\n { name: 'street-view', label: 'Street View', tags: ['location', 'map', 'view'] },\n\n // Health & Medical\n { name: 'heart-pulse', label: 'Heart Rate', tags: ['health', 'medical', 'heartbeat'] },\n { name: 'heart-circle-plus', label: 'Heart Plus', tags: ['health', 'add', 'medical'] },\n { name: 'stethoscope', label: 'Stethoscope', tags: ['medical', 'doctor', 'health'] },\n { name: 'user-doctor', label: 'Doctor', tags: ['medical', 'physician', 'healthcare'] },\n { name: 'user-nurse', label: 'Nurse', tags: ['medical', 'healthcare', 'hospital'] },\n { name: 'pills', label: 'Pills', tags: ['medicine', 'drugs', 'medication'] },\n { name: 'capsules', label: 'Capsules', tags: ['medicine', 'pills', 'medication'] },\n { name: 'prescription-bottle', label: 'Prescription', tags: ['medicine', 'pharmacy'] },\n { name: 'syringe', label: 'Syringe', tags: ['injection', 'medical', 'vaccine'] },\n { name: 'vial', label: 'Vial', tags: ['medicine', 'vaccine', 'medical'] },\n { name: 'bandage', label: 'Bandage', tags: ['first aid', 'wound', 'medical'] },\n { name: 'thermometer', label: 'Thermometer', tags: ['temperature', 'health', 'medical'] },\n { name: 'hospital', label: 'Hospital', tags: ['medical', 'healthcare', 'building'] },\n { name: 'hospital-user', label: 'Patient', tags: ['medical', 'healthcare', 'patient'] },\n { name: 'bed-pulse', label: 'Hospital Bed', tags: ['medical', 'patient', 'hospital'] },\n { name: 'wheelchair', label: 'Wheelchair', tags: ['accessibility', 'medical', 'disabled'] },\n { name: 'crutch', label: 'Crutch', tags: ['medical', 'injury', 'support'] },\n { name: 'smoking', label: 'Smoking', tags: ['cigarette', 'health', 'no-smoking'] },\n { name: 'smoking-ban', label: 'No Smoking', tags: ['prohibited', 'health'] },\n\n // Education & Learning\n { name: 'graduation-cap', label: 'Graduation', tags: ['education', 'degree', 'graduate'] },\n { name: 'user-graduate', label: 'Graduate', tags: ['student', 'education', 'degree'] },\n { name: 'chalkboard-user', label: 'Teacher', tags: ['education', 'teaching', 'classroom'] },\n { name: 'school', label: 'School', tags: ['education', 'building', 'learning'] },\n { name: 'book', label: 'Book', tags: ['reading', 'education', 'library'] },\n { name: 'book-open', label: 'Open Book', tags: ['reading', 'study', 'learn'] },\n { name: 'book-bookmark', label: 'Bookmark', tags: ['reading', 'save', 'mark'] },\n { name: 'books', label: 'Books', tags: ['reading', 'library', 'education'] },\n { name: 'bookmark', label: 'Bookmark', tags: ['save', 'mark', 'reading'] },\n { name: 'pen', label: 'Pen', tags: ['write', 'draw', 'writing'] },\n { name: 'pen-fancy', label: 'Fancy Pen', tags: ['write', 'signature'] },\n { name: 'pen-nib', label: 'Pen Nib', tags: ['write', 'calligraphy'] },\n { name: 'pencil', label: 'Pencil', tags: ['write', 'draw', 'edit'] },\n { name: 'highlighter', label: 'Highlighter', tags: ['mark', 'emphasize', 'note'] },\n { name: 'marker', label: 'Marker', tags: ['write', 'draw', 'mark'] },\n { name: 'eraser', label: 'Eraser', tags: ['delete', 'remove', 'erase'] },\n { name: 'ruler', label: 'Ruler', tags: ['measure', 'straight', 'tool'] },\n { name: 'ruler-combined', label: 'Rulers', tags: ['measure', 'geometry'] },\n { name: 'calculator', label: 'Calculator', tags: ['math', 'calculate', 'compute'] },\n { name: 'square-root-variable', label: 'Math', tags: ['mathematics', 'equation'] },\n { name: 'microscope', label: 'Microscope', tags: ['science', 'research', 'lab'] },\n { name: 'flask', label: 'Flask', tags: ['science', 'chemistry', 'lab'] },\n { name: 'atom', label: 'Atom', tags: ['science', 'physics', 'chemistry'] },\n { name: 'dna', label: 'DNA', tags: ['science', 'biology', 'genetics'] },\n { name: 'brain', label: 'Brain', tags: ['mind', 'think', 'intelligence'] },\n { name: 'certificate', label: 'Certificate', tags: ['award', 'achievement', 'diploma'] },\n { name: 'award', label: 'Award', tags: ['trophy', 'achievement', 'prize'] },\n { name: 'medal', label: 'Medal', tags: ['award', 'achievement', 'winner'] },\n { name: 'trophy', label: 'Trophy', tags: ['award', 'winner', 'achievement'] },\n\n // Food & Dining\n { name: 'utensils', label: 'Utensils', tags: ['food', 'dining', 'restaurant'] },\n { name: 'fork-knife', label: 'Fork Knife', tags: ['food', 'dining', 'restaurant'] },\n { name: 'plate-utensils', label: 'Plate', tags: ['food', 'dining', 'meal'] },\n { name: 'pizza-slice', label: 'Pizza', tags: ['food', 'slice', 'italian'] },\n { name: 'burger', label: 'Burger', tags: ['food', 'fast', 'hamburger'] },\n { name: 'hotdog', label: 'Hotdog', tags: ['food', 'fast'] },\n { name: 'drumstick-bite', label: 'Chicken', tags: ['food', 'meat', 'poultry'] },\n { name: 'ice-cream', label: 'Ice Cream', tags: ['dessert', 'sweet', 'frozen'] },\n { name: 'mug-hot', label: 'Hot Beverage', tags: ['drink', 'coffee', 'tea'] },\n { name: 'coffee', label: 'Coffee', tags: ['drink', 'beverage', 'cafe'] },\n { name: 'mug-saucer', label: 'Coffee Cup', tags: ['drink', 'coffee', 'tea'] },\n { name: 'glass-water', label: 'Water', tags: ['drink', 'beverage', 'glass'] },\n { name: 'wine-glass', label: 'Wine', tags: ['drink', 'alcohol', 'beverage'] },\n { name: 'champagne-glasses', label: 'Champagne', tags: ['celebrate', 'drink', 'toast'] },\n { name: 'martini-glass', label: 'Martini', tags: ['drink', 'alcohol', 'cocktail'] },\n { name: 'beer-mug-empty', label: 'Beer', tags: ['drink', 'alcohol', 'beverage'] },\n { name: 'cake', label: 'Cake', tags: ['dessert', 'sweet', 'birthday'] },\n { name: 'cake-candles', label: 'Birthday Cake', tags: ['birthday', 'celebration', 'party'] },\n { name: 'cookie', label: 'Cookie', tags: ['food', 'dessert', 'sweet'] },\n { name: 'candy-cane', label: 'Candy Cane', tags: ['candy', 'sweet', 'christmas'] },\n { name: 'apple-whole', label: 'Apple', tags: ['fruit', 'healthy', 'food'] },\n { name: 'lemon', label: 'Lemon', tags: ['fruit', 'citrus', 'food'] },\n { name: 'carrot', label: 'Carrot', tags: ['vegetable', 'healthy', 'food'] },\n { name: 'pepper-hot', label: 'Pepper', tags: ['spicy', 'food', 'hot'] },\n\n // Sports & Recreation\n { name: 'football', label: 'Football', tags: ['sport', 'soccer', 'game'] },\n { name: 'futbol', label: 'Soccer Ball', tags: ['sport', 'football', 'ball'] },\n { name: 'basketball', label: 'Basketball', tags: ['sport', 'ball', 'game'] },\n { name: 'baseball', label: 'Baseball', tags: ['sport', 'ball', 'game'] },\n { name: 'baseball-bat-ball', label: 'Baseball Bat', tags: ['sport', 'baseball'] },\n { name: 'volleyball', label: 'Volleyball', tags: ['sport', 'ball', 'game'] },\n { name: 'table-tennis-paddle-ball', label: 'Table Tennis', tags: ['sport', 'ping-pong'] },\n { name: 'golf-ball-tee', label: 'Golf', tags: ['sport', 'golf', 'game'] },\n { name: 'hockey-puck', label: 'Hockey', tags: ['sport', 'ice', 'game'] },\n { name: 'bowling-ball', label: 'Bowling', tags: ['sport', 'game', 'ball'] },\n { name: 'person-running', label: 'Running', tags: ['sport', 'exercise', 'fitness'] },\n { name: 'person-biking', label: 'Biking', tags: ['sport', 'exercise', 'cycling'] },\n { name: 'person-swimming', label: 'Swimming', tags: ['sport', 'water', 'exercise'] },\n { name: 'person-skiing', label: 'Skiing', tags: ['sport', 'winter', 'snow'] },\n { name: 'dumbbell', label: 'Dumbbell', tags: ['fitness', 'weight', 'gym'] },\n { name: 'weight-hanging', label: 'Weight', tags: ['fitness', 'gym', 'exercise'] },\n { name: 'heart', label: 'Heart', tags: ['health', 'fitness', 'cardio'] },\n { name: 'stopwatch-20', label: 'Timer', tags: ['time', 'sport', 'track'] },\n\n // Weather & Nature\n { name: 'sun', label: 'Sun', tags: ['weather', 'bright', 'sunny'] },\n { name: 'moon', label: 'Moon', tags: ['night', 'dark', 'lunar'] },\n { name: 'star', label: 'Star', tags: ['night', 'sky', 'favorite'] },\n { name: 'cloud', label: 'Cloud', tags: ['weather', 'sky', 'cloudy'] },\n { name: 'cloud-sun', label: 'Partly Cloudy', tags: ['weather', 'mixed'] },\n { name: 'cloud-moon', label: 'Cloudy Night', tags: ['weather', 'night'] },\n { name: 'cloud-rain', label: 'Rain', tags: ['weather', 'precipitation', 'rainy'] },\n { name: 'cloud-showers-heavy', label: 'Heavy Rain', tags: ['weather', 'storm', 'rain'] },\n { name: 'umbrella', label: 'Umbrella', tags: ['rain', 'weather', 'protection'] },\n { name: 'snowflake', label: 'Snow', tags: ['weather', 'cold', 'winter'] },\n { name: 'icicles', label: 'Icicles', tags: ['winter', 'cold', 'ice'] },\n { name: 'temperature-high', label: 'Hot', tags: ['weather', 'temperature', 'heat'] },\n { name: 'temperature-low', label: 'Cold', tags: ['weather', 'temperature', 'cool'] },\n { name: 'bolt', label: 'Lightning', tags: ['weather', 'storm', 'thunder'] },\n { name: 'bolt-lightning', label: 'Thunder', tags: ['weather', 'storm', 'lightning'] },\n { name: 'wind', label: 'Wind', tags: ['weather', 'breeze', 'air'] },\n { name: 'tornado', label: 'Tornado', tags: ['weather', 'storm', 'cyclone'] },\n { name: 'water', label: 'Water', tags: ['nature', 'liquid', 'sea'] },\n { name: 'droplet', label: 'Droplet', tags: ['water', 'liquid', 'drop'] },\n { name: 'fire', label: 'Fire', tags: ['hot', 'burn', 'flame'] },\n { name: 'fire-flame-curved', label: 'Flame', tags: ['fire', 'hot', 'burn'] },\n { name: 'tree', label: 'Tree', tags: ['nature', 'plant', 'forest'] },\n { name: 'seedling', label: 'Seedling', tags: ['plant', 'grow', 'nature'] },\n { name: 'leaf', label: 'Leaf', tags: ['nature', 'plant', 'green'] },\n { name: 'clover', label: 'Clover', tags: ['nature', 'plant', 'lucky'] },\n { name: 'flower', label: 'Flower', tags: ['nature', 'plant', 'blossom'] },\n { name: 'feather', label: 'Feather', tags: ['nature', 'bird', 'light'] },\n { name: 'mountain', label: 'Mountain', tags: ['nature', 'landscape', 'peak'] },\n\n // Shopping & Commerce\n { name: 'shopping-cart', label: 'Shopping Cart', tags: ['buy', 'purchase', 'shop'] },\n { name: 'cart-plus', label: 'Add to Cart', tags: ['shopping', 'add', 'buy'] },\n { name: 'cart-shopping', label: 'Cart', tags: ['shop', 'buy', 'store'] },\n { name: 'bag-shopping', label: 'Shopping Bag', tags: ['buy', 'store', 'retail'] },\n { name: 'basket-shopping', label: 'Basket', tags: ['shopping', 'buy', 'cart'] },\n { name: 'store', label: 'Store', tags: ['shop', 'retail', 'business'] },\n { name: 'shop', label: 'Shop', tags: ['store', 'retail', 'business'] },\n { name: 'cash-register', label: 'Cash Register', tags: ['payment', 'checkout', 'pos'] },\n { name: 'tags', label: 'Tags', tags: ['price', 'label', 'sale'] },\n { name: 'tag', label: 'Tag', tags: ['price', 'label', 'sale'] },\n { name: 'barcode', label: 'Barcode', tags: ['scan', 'product', 'price'] },\n { name: 'percent', label: 'Percent', tags: ['discount', 'sale', 'offer'] },\n { name: 'gift', label: 'Gift', tags: ['present', 'surprise', 'celebration'] },\n { name: 'gifts', label: 'Gifts', tags: ['presents', 'celebration'] },\n { name: 'box', label: 'Box', tags: ['package', 'container', 'shipping'] },\n { name: 'box-open', label: 'Open Box', tags: ['unpack', 'delivery', 'package'] },\n { name: 'boxes-stacked', label: 'Boxes', tags: ['inventory', 'storage', 'warehouse'] },\n\n // Security & Safety\n { name: 'eye', label: 'Eye', tags: ['view', 'watch', 'visible'] },\n { name: 'eye-slash', label: 'Hide', tags: ['hidden', 'invisible', 'password'] },\n { name: 'eye-low-vision', label: 'Low Vision', tags: ['accessibility', 'vision'] },\n { name: 'user-secret', label: 'Secret User', tags: ['anonymous', 'hidden', 'spy'] },\n { name: 'fingerprint', label: 'Fingerprint', tags: ['biometric', 'identity', 'security'] },\n { name: 'id-card', label: 'ID Card', tags: ['identity', 'badge', 'credential'] },\n { name: 'id-badge', label: 'Badge', tags: ['identity', 'credential', 'staff'] },\n { name: 'fire', label: 'Fire', tags: ['hot', 'burn', 'danger'] },\n { name: 'fire-extinguisher', label: 'Fire Extinguisher', tags: ['safety', 'emergency'] },\n { name: 'triangle-exclamation', label: 'Warning', tags: ['alert', 'caution', 'danger'] },\n { name: 'exclamation', label: 'Exclamation', tags: ['alert', 'important', 'warning'] },\n { name: 'circle-exclamation', label: 'Alert', tags: ['warning', 'important'] },\n { name: 'ban', label: 'Ban', tags: ['prohibited', 'forbidden', 'stop'] },\n { name: 'circle-radiation', label: 'Radiation', tags: ['danger', 'hazard', 'warning'] },\n { name: 'skull-crossbones', label: 'Danger', tags: ['hazard', 'poison', 'warning'] },\n { name: 'biohazard', label: 'Biohazard', tags: ['danger', 'hazard', 'warning'] },\n\n // Miscellaneous\n { name: 'circle', label: 'Circle', tags: ['shape', 'round', 'dot'] },\n { name: 'square', label: 'Square', tags: ['shape', 'box'] },\n { name: 'square-full', label: 'Full Square', tags: ['shape', 'filled'] },\n { name: 'circle-dot', label: 'Dot', tags: ['point', 'marker', 'bullet'] },\n { name: 'question', label: 'Question', tags: ['help', 'ask', 'faq'] },\n { name: 'circle-question', label: 'Help', tags: ['question', 'support', 'info'] },\n { name: 'circle-info', label: 'Info', tags: ['information', 'details', 'about'] },\n { name: 'info', label: 'Information', tags: ['info', 'details', 'help'] },\n { name: 'lightbulb', label: 'Lightbulb', tags: ['idea', 'bright', 'innovation'] },\n { name: 'bolt', label: 'Bolt', tags: ['lightning', 'fast', 'power'] },\n { name: 'wand-magic', label: 'Magic Wand', tags: ['magic', 'wizard', 'sparkle'] },\n { name: 'wand-magic-sparkles', label: 'Magic', tags: ['wizard', 'sparkle', 'enchant'] },\n { name: 'puzzle-piece', label: 'Puzzle', tags: ['piece', 'solve', 'game'] },\n { name: 'gamepad', label: 'Gamepad', tags: ['gaming', 'controller', 'play'] },\n { name: 'dice', label: 'Dice', tags: ['game', 'random', 'chance'] },\n { name: 'dice-d20', label: 'D20 Dice', tags: ['game', 'tabletop', 'rpg'] },\n { name: 'chess', label: 'Chess', tags: ['game', 'strategy', 'board'] },\n { name: 'spade', label: 'Spade', tags: ['cards', 'game', 'suit'] },\n { name: 'heart', label: 'Heart Card', tags: ['cards', 'game', 'suit'] },\n { name: 'diamond', label: 'Diamond', tags: ['cards', 'game', 'suit'] },\n { name: 'club', label: 'Club', tags: ['cards', 'game', 'suit'] },\n { name: 'palette', label: 'Palette', tags: ['color', 'art', 'paint'] },\n { name: 'brush', label: 'Brush', tags: ['paint', 'art', 'draw'] },\n { name: 'paintbrush', label: 'Paintbrush', tags: ['art', 'paint', 'draw'] },\n { name: 'scissors', label: 'Scissors', tags: ['cut', 'trim', 'tool'] },\n { name: 'crown', label: 'Crown', tags: ['king', 'royal', 'premium'] },\n { name: 'gem', label: 'Gem', tags: ['diamond', 'jewel', 'precious'] },\n { name: 'ring', label: 'Ring', tags: ['jewelry', 'wedding', 'engagement'] },\n { name: 'mug-hot', label: 'Hot Drink', tags: ['coffee', 'tea', 'beverage'] },\n { name: 'battery-full', label: 'Battery Full', tags: ['power', 'charge', 'energy'] },\n { name: 'battery-half', label: 'Battery Half', tags: ['power', 'charge'] },\n { name: 'battery-empty', label: 'Battery Empty', tags: ['power', 'low', 'charge'] },\n { name: 'plug', label: 'Plug', tags: ['power', 'electricity', 'connect'] },\n { name: 'magnet', label: 'Magnet', tags: ['attract', 'magnetic', 'pull'] },\n { name: 'compass-drafting', label: 'Drafting Compass', tags: ['geometry', 'draw', 'circle'] },\n { name: 'rotate', label: 'Rotate', tags: ['spin', 'turn', 'refresh'] },\n { name: 'infinity', label: 'Infinity', tags: ['unlimited', 'endless', 'loop'] },\n];\n\n//#endregion\n\n//#region ---- Default Providers ----\n\n/**\n * Default icon provider that provides the base set of FontAwesome icons.\n */\nexport class AXPIconProviderDefault extends AXPIconProvider {\n async provide(): Promise<AXPFontAwesomeIcon[]> {\n return DEFAULT_ICONS;\n }\n}\n\n/**\n * Default icon style provider that provides the base set of FontAwesome styles.\n */\nexport class AXPIconStyleProviderDefault extends AXPIconStyleProvider {\n async provide(): Promise<AXPFontAwesomeIconStyle[]> {\n return DEFAULT_ICON_STYLES;\n }\n}\n\n//#endregion\n\n","import { Provider } from '@angular/core';\nimport { AXP_ICON_PROVIDER, AXP_ICON_STYLE_PROVIDER } from './icon-chooser.token';\nimport { AXPIconProviderDefault, AXPIconStyleProviderDefault } from './icon-chooser-default.provider';\n\n//#region ---- Provider Functions ----\n\n/**\n * Provides the default icon provider to the application.\n * This should be registered in your app module or config.\n */\nexport function provideDefaultIconProvider(): Provider {\n return {\n provide: AXP_ICON_PROVIDER,\n useClass: AXPIconProviderDefault,\n multi: true,\n };\n}\n\n/**\n * Provides the default icon style provider to the application.\n * This should be registered in your app module or config.\n */\nexport function provideDefaultIconStyleProvider(): Provider {\n return {\n provide: AXP_ICON_STYLE_PROVIDER,\n useClass: AXPIconStyleProviderDefault,\n multi: true,\n };\n}\n\n/**\n * Provides both default icon and style providers to the application.\n * This is a convenience function that combines provideDefaultIconProvider() and provideDefaultIconStyleProvider().\n */\nexport function provideDefaultIconChooser(): Provider[] {\n return [provideDefaultIconProvider(), provideDefaultIconStyleProvider()];\n}\n\n/**\n * Provides a custom icon provider to the application.\n * This ADDS additional icons alongside the default icon set.\n * \n * @param providerClass - The custom icon provider class\n * \n * @example\n * ```typescript\n * class MyCustomIconProvider extends AXPIconProvider {\n * async provide(): Promise<AXPFontAwesomeIcon[]> {\n * return [\n * { name: 'custom-icon', label: 'Custom Icon' }\n * ];\n * }\n * }\n * \n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideCustomIconProvider(MyCustomIconProvider),\n * ]\n * };\n * ```\n */\nexport function provideCustomIconProvider(providerClass: any): Provider {\n return {\n provide: AXP_ICON_PROVIDER,\n useClass: providerClass,\n multi: true,\n };\n}\n\n/**\n * Provides a custom icon style provider to the application.\n * This ADDS additional icon styles alongside the default styles.\n * \n * @param providerClass - The custom icon style provider class\n * \n * @example\n * ```typescript\n * class MyCustomIconStyleProvider extends AXPIconStyleProvider {\n * async provide(): Promise<AXPFontAwesomeIconStyle[]> {\n * return [\n * { name: 'fa-custom', label: 'Custom' }\n * ];\n * }\n * }\n * \n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideCustomIconStyleProvider(MyCustomIconStyleProvider),\n * ]\n * };\n * ```\n */\nexport function provideCustomIconStyleProvider(providerClass: any): Provider {\n return {\n provide: AXP_ICON_STYLE_PROVIDER,\n useClass: providerClass,\n multi: true,\n };\n}\n\n//#endregion\n\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n template: `\n @for (size of sizes(); track size) {\n <div (click)=\"onSizeClick(size)\" [style.font-size]=\"size\" [class.--selected]=\"size === selectedSize()\">\n <div>\n <span>{{ '@layout:terms.font-sizes.' + size | translate | async }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './font-size-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly sizes = signal<string[]>(['small', 'medium', 'large', 'x-large']);\n\n protected selectedSize = signal<string | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedSize.set(this.sizes().find((s) => s === this.getValue()) ?? this.sizes()[0]);\n }\n });\n\n protected onSizeClick(size: string) {\n this.setValue(size);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPFontSizeChooserWidget: AXPWidgetConfig = {\n name: \"font-size-chooser\",\n title: \"Font Size Chooser\",\n icon: \"fa-light fa-text-size\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-size-chooser-widget.component').then((c) => c.AXPFontSizeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n fontSizeChooser: 'font-size-chooser';\n }\n} ","//#region ----- Imports -----\nimport {\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { AXPRegionalFontStyleLoaderService } from './regional-font-style-loader.service';\n//#endregion\n\n//#region ----- Directive -----\n/** Loads a font stylesheet when the host row enters (or nears) the viewport. */\n@Directive({\n selector: '[axpFontStyleLazyLoad]',\n standalone: true,\n})\nexport class AXPFontStyleLazyLoadDirective implements OnInit, OnDestroy {\n //#region ----- Inputs -----\n readonly axpFontStyleLazyLoad = input.required<string>();\n //#endregion\n\n //#region ----- Services & Dependencies -----\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly fontLoader = inject(AXPRegionalFontStyleLoaderService);\n //#endregion\n\n //#region ----- State -----\n private observer?: IntersectionObserver;\n //#endregion\n\n //#region ----- Lifecycle -----\n ngOnInit(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n if (!entries.some((entry) => entry.isIntersecting)) {\n return;\n }\n\n this.fontLoader.ensureFontStylesLoaded(this.axpFontStyleLazyLoad());\n this.observer?.disconnect();\n this.observer = undefined;\n },\n { rootMargin: '120px 0px' },\n );\n\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n //#endregion\n}\n//#endregion\n","//#region ----- Imports -----\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { resolveFontVariationSettings, type AXPFontStyleOption } from './font-style-options';\nimport { AXPFontStyleLazyLoadDirective } from './font-style-lazy-load.directive';\n//#endregion\n\n//#region ----- Component -----\n@Component({\n templateUrl: './font-style-chooser-popup.component.html',\n styleUrl: './font-style-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPFontStyleLazyLoadDirective],\n})\nexport class AXPFontStyleChooserPopupComponent extends AXBasePageComponent {\n //#region ----- Inputs -----\n @Input() fonts: AXPFontStyleOption[] = [];\n @Input() selectedFontId = 'system-ui';\n //#endregion\n\n //#region ----- Event Handlers -----\n protected fontVariation(fontId: string): string | undefined {\n return resolveFontVariationSettings(fontId);\n }\n\n protected selectFont(font: AXPFontStyleOption): void {\n this.close({ fontId: font.id });\n }\n //#endregion\n}\n//#endregion\n","<div class=\"axp-font-style-chooser-popup flex h-full flex-col bg-lightest\">\n <!-- ----- Scrollable font list filtered by regional language settings ----- -->\n <div class=\"flex-1 overflow-y-auto p-2\">\n <div class=\"flex flex-col gap-1\">\n @for (font of fonts; track font.id) {\n <button\n type=\"button\"\n class=\"axp-font-style-chooser-popup__item\"\n [class.--selected]=\"font.id === selectedFontId\"\n [axpFontStyleLazyLoad]=\"font.id\"\n (click)=\"selectFont(font)\"\n >\n <div class=\"axp-font-style-option\">\n <span\n class=\"axp-font-style-option__sample\"\n [style.font-family]=\"font.cssFamily\"\n [style.font-variation-settings]=\"fontVariation(font.id)\"\n >\n {{ font.title }}\n </span>\n </div>\n </button>\n }\n </div>\n </div>\n</div>\n","//#region ----- Imports -----\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport {\n AXP_LOCALE_MANAGEMENT_PORT,\n AXPSettingsService,\n} from '@acorex-platform/framework-client/common';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { filter } from 'rxjs';\nimport { AXPFontStyleChooserPopupComponent } from './font-style-chooser-popup.component';\nimport { AXP_FONT_STYLE_OPTIONS, resolveFontVariationSettings } from './font-style-options';\nimport {\n resolveEffectiveFontId,\n resolveRegionalFontOptions,\n resolveRegionalFontScriptContext,\n} from './font-style-regional.util';\nimport { AXPRegionalFontStyleLoaderService } from './regional-font-style-loader.service';\n//#endregion\n\n//#region ----- Component -----\n@Component({\n templateUrl: './font-style-chooser-widget.component.html',\n styleUrl: './font-style-chooser-widget.css',\n host: {\n class: 'axp-font-style-chooser block w-full',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule, AXTextBoxModule, FormsModule],\n})\nexport class AXPFontStyleChooserWidgetComponent extends AXPValueWidgetComponent<string> implements OnInit {\n //#region ----- Services & Dependencies -----\n private readonly settingsService = inject(AXPSettingsService);\n private readonly localePort = inject(AXP_LOCALE_MANAGEMENT_PORT, { optional: true });\n private readonly regionalFontLoader = inject(AXPRegionalFontStyleLoaderService);\n private readonly popupService = inject(AXPopupService);\n private readonly translateService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n //#endregion\n\n //#region ----- State Signals -----\n protected readonly fonts = signal(\n AXP_FONT_STYLE_OPTIONS.filter((font) => font.script === 'universal'),\n );\n protected readonly languageCode = signal<string | undefined>(undefined);\n\n protected readonly selectedFontId = computed(() => {\n const available = this.fonts();\n return resolveEffectiveFontId(this.getValue(), available, this.languageCode());\n });\n\n protected readonly selectedFont = computed(() => {\n const id = this.selectedFontId();\n return this.fonts().find((font) => font.id === id) ?? this.fonts()[0];\n });\n\n protected readonly selectedFontLabel = computed(() => this.selectedFont()?.title ?? '');\n\n protected readonly selectedFontFamily = computed(() => this.selectedFont()?.cssFamily ?? 'inherit');\n\n protected readonly selectedFontVariation = computed(() =>\n resolveFontVariationSettings(this.selectedFontId()),\n );\n\n protected readonly isInteractionDisabled = computed(\n () => !!(this.options()['disabled'] || this.options()['readonly']),\n );\n //#endregion\n\n //#region ----- Lifecycle -----\n override async ngOnInit(): Promise<void> {\n await this.refreshFonts();\n super.ngOnInit();\n\n this.settingsService.onLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.refreshFonts();\n });\n\n this.settingsService.onChanged\n .pipe(\n filter(\n (change) =>\n change.keys.includes(AXPRegionalSetting.AvailableLanguages) ||\n change.keys.includes(AXPRegionalSetting.Language),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n void this.refreshFonts();\n });\n }\n //#endregion\n\n //#region ----- Event Handlers -----\n protected async openPopup(): Promise<void> {\n if (this.isInteractionDisabled()) {\n return;\n }\n\n await this.refreshFonts();\n\n const result = await this.popupService.open(AXPFontStyleChooserPopupComponent, {\n title: await this.translateService.translateAsync('@general:widgets.font-style-chooser.popup-title'),\n size: 'md',\n data: {\n fonts: this.fonts(),\n selectedFontId: this.selectedFontId(),\n },\n });\n\n const fontId = result?.data?.fontId as string | undefined;\n if (fontId) {\n this.setValue(resolveEffectiveFontId(fontId, this.fonts(), this.languageCode()));\n }\n }\n //#endregion\n\n //#region ----- Data Loading -----\n private async refreshFonts(): Promise<void> {\n const context = await resolveRegionalFontScriptContext(this.settingsService, this.localePort);\n const available = resolveRegionalFontOptions(context);\n const language = (await this.settingsService.get(AXPRegionalSetting.Language)) as string | undefined;\n this.languageCode.set(language);\n this.fonts.set(available);\n\n const effectiveId = resolveEffectiveFontId(this.getValue(), available, language);\n this.regionalFontLoader.ensureFontStylesLoaded(effectiveId);\n\n if (effectiveId !== this.getValue()) {\n this.setValue(effectiveId);\n }\n }\n //#endregion\n}\n//#endregion\n","<ax-text-box\n class=\"axp-font-style-chooser__input\"\n look=\"fill\"\n [ngModel]=\"selectedFontLabel()\"\n [readonly]=\"true\"\n [disabled]=\"isInteractionDisabled()\"\n [style.font-family]=\"selectedFontFamily()\"\n [style.font-variation-settings]=\"selectedFontVariation()\"\n (click)=\"openPopup()\"\n>\n <ax-suffix>\n <ax-button\n look=\"none\"\n class=\"axp-font-style-chooser__suffix-btn\"\n [disabled]=\"isInteractionDisabled()\"\n >\n <ax-icon icon=\"fa-light fa-up-right-from-square\"></ax-icon>\n </ax-button>\n </ax-suffix>\n</ax-text-box>\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPFontStyleChooserWidget: AXPWidgetConfig = {\n name: \"font-style-chooser\",\n title: \"Font Style Chooser\",\n icon: \"fa-light fa-font\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-style-chooser-widget.component').then((c) => c.AXPFontStyleChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n fontStyleChooser: 'font-style-chooser';\n }\n} ","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface MenuOrientationOption {\n id: string;\n labelKey: string;\n icon?: string;\n image?: string;\n}\n\ntype MenuOrientationChooserMode =\n | 'vertical-mode'\n | 'navigation-mode'\n | 'menu-orientation'\n | 'density';\n\n@Component({\n template: `\n @for (orientation of orientations(); track orientation.id) {\n <div\n (click)=\"onOrientationClick(orientation)\"\n [class.--selected]=\"orientation.id === selectedOrientation()?.id\"\n [class.--visual]=\"!!orientation.image\"\n >\n @if (orientation.image) {\n <img [src]=\"orientation.image\" [alt]=\"orientation.labelKey | translate | async\" />\n <span>{{ orientation.labelKey | translate | async }}</span>\n } @else {\n <i [class]=\"orientation.icon\"></i>\n <span>{{ orientation.labelKey | translate | async }}</span>\n }\n </div>\n }\n `,\n styleUrl: './menu-orientation-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly orientations = computed<MenuOrientationOption[]>(() => {\n const chooser = this.options()['chooser'] as MenuOrientationChooserMode | undefined;\n\n if (chooser === 'vertical-mode') {\n return [\n {\n id: 'compact',\n image: '/assets/images/ui/menu-mode/compact.svg',\n labelKey: '@layout:terms.menu-modes.compact',\n },\n {\n id: 'full',\n image: '/assets/images/ui/menu-mode/full.svg',\n labelKey: '@layout:terms.menu-modes.full',\n },\n ];\n }\n\n if (chooser === 'navigation-mode') {\n return [\n {\n id: 'simple',\n image: '/assets/images/ui/navigation-mode/simple.svg',\n labelKey: '@layout:terms.navigation-modes.simple',\n },\n {\n id: 'tabular',\n image: '/assets/images/ui/navigation-mode/tabular.svg',\n labelKey: '@layout:terms.navigation-modes.tabular',\n },\n ];\n }\n\n if (chooser === 'density') {\n return [\n {\n id: 'normal',\n icon: 'fa-light fa-distribute-spacing-vertical',\n labelKey: '@layout:settings.appearance.items.root-menu.density.options.normal',\n },\n {\n id: 'compact',\n icon: 'fa-light fa-compress',\n labelKey: '@layout:settings.appearance.items.root-menu.density.options.compact',\n },\n ];\n }\n\n return [\n {\n id: 'vertical',\n icon: 'fa-regular fa-square-ellipsis-vertical',\n labelKey: '@layout:terms.menu-modes.vertical',\n },\n {\n id: 'horizontal',\n icon: 'fa-regular fa-square-ellipsis',\n labelKey: '@layout:terms.menu-modes.horizontal',\n },\n ];\n });\n\n protected selectedOrientation = signal<MenuOrientationOption | null>(null);\n\n #eff = effect(() => {\n const options = this.orientations();\n if (this.getValue()) {\n this.selectedOrientation.set(options.find((o) => o.id === this.getValue()) ?? options[0]);\n }\n });\n\n protected onOrientationClick(orientation: MenuOrientationOption): void {\n this.setValue(orientation.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPMenuOrientationChooserWidget: AXPWidgetConfig = {\n name: \"menu-orientation-chooser\",\n title: \"Menu Orientation Chooser\",\n icon: \"fa-light fa-bars-staggered\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./menu-orientation-chooser-widget.component').then((c) => c.AXPMenuOrientationChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n menuOrientationChooser: 'menu-orientation-chooser';\n }\n} ","import { inject, Injectable } from '@angular/core';\nimport { AXP_THEME_PALETTE_PROVIDER } from '../../palette.provider';\nimport { AXPLayoutThemeService } from '../../theme.service';\nimport { AXPThemePalette, AXPThemePaletteColors } from '../../contracts/theme.types';\n\n//#region ---- Types ----\n\nexport interface AXPColor {\n title: string;\n name: string;\n color: string;\n background: string;\n border: string;\n}\n\n//#endregion\n\n//#region ---- Color utilities ----\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const normalized = hex.trim().replace(/^#/, '');\n const full =\n normalized.length === 3\n ? normalized\n .split('')\n .map((c) => c + c)\n .join('')\n : normalized;\n return [\n parseInt(full.slice(0, 2), 16),\n parseInt(full.slice(2, 4), 16),\n parseInt(full.slice(4, 6), 16),\n ];\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((c) => {\n const s = c / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\nfunction contrastForeground(backgroundHex: string): string {\n return relativeLuminance(backgroundHex) > 0.55 ? '#171717' : '#ffffff';\n}\n\nfunction titleCase(str: string): string {\n return str.replace(/-/g, ' ').replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.slice(1).toLowerCase());\n}\n\n//#endregion\n\n//#region ---- Surface variants (palette-synchronized) ----\n\n/**\n * Seven tonal steps per semantic color. Backgrounds are mixed in RGB using the **same palette’s**\n * canvas `light` and `dark` as poles so swatches stay aligned with `AXPThemePaletteProvider` data.\n */\nconst SURFACE_VARIANTS = ['lightest', 'lighter', 'light', 'surface', 'dark', 'darker', 'darkest'] as const;\n\ntype SurfaceVariant = (typeof SURFACE_VARIANTS)[number];\n\ninterface CanvasPoles {\n light: string;\n dark: string;\n}\n\nfunction styleTitlePrefix(style: string): string {\n const accentMatch = /^accent(\\d+)$/.exec(style);\n if (accentMatch) {\n return `Accent ${accentMatch[1]}`;\n }\n return titleCase(style);\n}\n\nfunction surfaceVariantTitle(style: string, variant: SurfaceVariant): string {\n if (variant === 'surface') {\n return styleTitlePrefix(style);\n }\n return `${styleTitlePrefix(style)} ${titleCase(variant)}`;\n}\n\n/** Tailwind utility triplet stored by theme-color-chooser and outcome display rules. */\nexport function buildThemeSurfaceColorTriplet(\n styleKey: string,\n variant: SurfaceVariant,\n): Pick<AXPColor, 'color' | 'background' | 'border'> {\n return {\n color: `text-${styleKey}-on-${variant}`,\n background: `bg-${styleKey}-${variant}`,\n border: `border-${styleKey}-${variant}`,\n };\n}\n\n/** Ordered `\"foreground background border\"` string for theme-color-chooser values. */\nexport function buildThemeSurfaceColorValue(styleKey: string, variant: SurfaceVariant = 'lightest'): string {\n const triplet = buildThemeSurfaceColorTriplet(styleKey, variant);\n return `${triplet.color} ${triplet.background} ${triplet.border}`;\n}\n\nfunction pushVariantScale(entries: AXPColor[], styleKey: string, _baseHex: string, _canvas: CanvasPoles): void {\n for (const variant of SURFACE_VARIANTS) {\n const name = `${styleKey}-${variant}`;\n entries.push({\n title: surfaceVariantTitle(styleKey, variant),\n name,\n ...buildThemeSurfaceColorTriplet(styleKey, variant),\n });\n }\n}\n\nfunction pushFlatSwatch(entries: AXPColor[], title: string, name: string, hex: string): void {\n const color = contrastForeground(hex);\n entries.push({ title, name, color, background: hex, border: hex });\n}\n\n/**\n * Builds the full chooser list from a single `AXPThemePalette` (colors object only).\n */\nfunction buildColorsFromThemePalette(palette: AXPThemePalette): AXPColor[] {\n const colors = palette.colors as AXPThemePaletteColors & { neutral?: string };\n const canvas: CanvasPoles = { light: colors.light, dark: colors.dark };\n const entries: AXPColor[] = [];\n\n const core = ['primary', 'secondary', 'success', 'warning', 'danger'] as const;\n for (const key of core) {\n pushVariantScale(entries, key, colors[key], canvas);\n }\n\n const neutral = colors.neutral;\n if (neutral) {\n pushVariantScale(entries, 'neutral', neutral, canvas);\n }\n\n colors.accents.forEach((hex, index) => {\n pushVariantScale(entries, `accent${index + 1}`, hex, canvas);\n });\n\n pushFlatSwatch(entries, 'Canvas Light', 'canvas-light', colors.light);\n pushFlatSwatch(entries, 'Canvas Dark', 'canvas-dark', colors.dark);\n\n return entries;\n}\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPColorChooserService {\n private readonly themeStore = inject(AXPLayoutThemeService);\n private readonly palettePromise = inject(AXP_THEME_PALETTE_PROVIDER);\n\n private cacheKey: string | null = null;\n private cache: AXPColor[] | null = null;\n\n async getColors(): Promise<AXPColor[]> {\n const paletteName = this.themeStore.currentPalette();\n if (this.cache && this.cacheKey === paletteName) {\n return this.cache;\n }\n\n const provider = await this.palettePromise;\n const list = await provider.getList();\n const palette =\n list.find((p) => p.name === paletteName) ?? list.find((p) => p.name === 'default') ?? list[0] ?? null;\n\n const colors = palette ? buildColorsFromThemePalette(palette) : [];\n this.cacheKey = paletteName;\n this.cache = colors;\n return colors;\n }\n}\n\n//#endregion\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXLookupComponent,\n type AXLookupItem,\n type AXLookupSelectionChangedEvent,\n} from '@acorex/components/lookup';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, OnInit, signal } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { FormsModule } from '@angular/forms';\nimport { AXPColor, AXPColorChooserService } from './theme-color-chooser.service';\n\n@Component({\n selector: 'ax-color-chooser-widget',\n template: `\n <ax-form-field>\n <ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"colors()\"\n textField=\"title\"\n valueField=\"name\"\n [searchable]=\"true\"\n [placeholder]=\"placeholder()\"\n [itemTemplate]=\"customItemTemplate\"\n [ngModel]=\"selectedColor()\"\n (onValueChanged)=\"handleValueChange($event)\"\n (onSelectionChanged)=\"handleSelectionChanged($event)\"\n [selectedTemplate]=\"customItemTemplate\"\n >\n <ng-template #customItemTemplate let-item>\n <div class=\"flex items-center gap-2 p-2\">\n @if (isHexSwatch(item)) {\n <div\n class=\"w-6 h-6 rounded flex items-center justify-center border border-solid\"\n [style.background-color]=\"item.background\"\n [style.border-color]=\"item.border\"\n [style.color]=\"item.color\"\n >\n <span>Aa</span>\n </div>\n } @else {\n <div\n class=\"w-6 h-6 rounded flex items-center justify-center border border-dashed border-black dark:border-white\"\n [class]=\"item.background\"\n >\n <span [class]=\"item.color\">Aa</span>\n </div>\n }\n <span>{{ item.title }}</span>\n </div>\n </ng-template>\n <ax-validation-rule [message]=\"('@general:terms.validation.messages.required' | translate | async) ?? ''\" rule=\"required\"></ax-validation-rule>\n </ax-lookup>\n </ax-form-field>\n `,\n host: {\n class: 'block flex-1 w-full',\n },\n imports: [AXLookupComponent, AXFormModule, CommonModule, FormsModule, AXTranslationModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPColorChooserWidgetEditComponent\n extends AXPValueWidgetComponent<AXPColor | string | undefined>\n implements OnInit {\n private colorService = inject(AXPColorChooserService);\n protected colors = signal<AXPColor[]>([]);\n private lastSelectedColor = signal<AXPColor | undefined>(undefined);\n protected placeholder = computed(() => this.options()['placeholder'] ?? '');\n protected selectedColor = computed(() => {\n const value = this.getValue();\n const fallbackName = () => this.colors()[0]?.name;\n if (!value) {\n return fallbackName();\n }\n if (typeof value === 'string') {\n const parsed = this.parseStringValue(value);\n if (parsed) {\n return parsed;\n }\n return fallbackName();\n }\n return (value as AXPColor).name;\n });\n\n override async ngOnInit() {\n const allColors = await this.colorService.getColors();\n this.colors.set(allColors);\n super.ngOnInit();\n }\n\n protected handleSelectionChanged(event: AXLookupSelectionChangedEvent): void {\n const item = (event.items ?? [])[0] as AXLookupItem | undefined;\n this.lastSelectedColor.set(item as AXPColor | undefined);\n }\n\n handleValueChange(event: AXValueChangedEvent): void {\n if (event.isUserInteraction) {\n if (!event.value) {\n this.setValue(undefined);\n return;\n }\n const color =\n this.lastSelectedColor() ?? this.colors().find((entry) => entry.name === event.value);\n if (!color) {\n return;\n }\n const stringValue = `${color.color} ${color.background} ${color.border}`;\n this.setValue(stringValue);\n }\n }\n\n protected isHexSwatch(color: AXPColor): boolean {\n return color.background.startsWith('#');\n }\n\n private parseStringValue(value: string): string | null {\n const parts = value.trim().split(/\\s+/);\n if (parts.length !== 3) {\n return null;\n }\n const [color, background, border] = parts;\n const exactMatch = this.colors().find(\n (entry) => entry.color === color && entry.background === background && entry.border === border,\n );\n if (exactMatch) {\n return exactMatch.name;\n }\n\n const backgroundMatch = /^bg-(.+)-(.+)$/.exec(background);\n if (backgroundMatch) {\n const name = `${backgroundMatch[1]}-${backgroundMatch[2]}`;\n if (this.colors().some((entry) => entry.name === name)) {\n return name;\n }\n }\n\n return null;\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPThemeColorChooserWidgetConfig: AXPWidgetConfig = {\n name: 'theme-color-chooser',\n title: 'Theme Color Chooser',\n icon: 'fa-light fa-palette',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () => import('./theme-color-chooser-edit.component').then((c) => c.AXPColorChooserWidgetEditComponent),\n },\n column: {\n component: () => import('./theme-color-chooser-column.component').then((c) => c.AXPColorChooserWidgetColumnComponent),\n },\n view: {\n component: () => import('./theme-color-chooser-view.component').then((c) => c.AXPColorChooserWidgetViewComponent),\n },\n\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n themeColorChooser: 'theme-color-chooser';\n }\n}\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPThemeMode } from '../../contracts/theme.types';\n\ninterface ThemeModeOption {\n id: AXPThemeMode;\n icon: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div (click)=\"onModeClick(mode)\" [class.--selected]=\"mode.id === selectedMode()?.id\">\n <div>\n <i [class]=\"mode.icon\"></i>\n </div>\n <span>{{ '@layout:terms.theme-modes.' + mode.id | translate | async }}</span>\n </div>\n }\n `,\n styleUrl: './theme-mode-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly modes = signal<ThemeModeOption[]>([\n { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },\n { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },\n { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },\n ]);\n\n protected selectedMode = signal<ThemeModeOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedMode.set(this.modes().find((m) => m.id === this.getValue()) ?? this.modes()[0]);\n }\n });\n\n protected onModeClick(mode: ThemeModeOption) {\n this.setValue(mode.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPThemeModeChooserWidget: AXPWidgetConfig = {\n name: \"theme-mode-chooser\",\n title: \"Theme Mode Chooser\",\n icon: \"fa-light fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-mode-chooser-widget.component').then((c) => c.AXPThemeModeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n themeModeChooser: 'theme-mode-chooser';\n }\n}","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_THEME_PALETTE_PROVIDER } from '../../palette.provider';\nimport { AXPThemePalette } from '../../contracts/theme.types';\n\n@Component({\n template: `\n @for (palette of palettes(); track palette.name) {\n <div (click)=\"onPaletteClick(palette)\" [class.--selected]=\"palette.name === selectedPalette()?.name\">\n <span>{{ palette.title }}</span>\n <div>\n <div [style.background-color]=\"palette.colors.primary\" class=\"end-7 z-[2]\"></div>\n <div [style.background-color]=\"palette.colors.secondary\" class=\"end-3.5 z-[1]\"></div>\n <div [style.background-color]=\"palette.colors.accents[0]\" class=\"end-0 z-0\"></div>\n </div>\n </div>\n }\n `,\n styleUrl: './theme-palette-chooser-widget.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, AXSelectionCdkModule],\n})\nexport class AXPThemePaletteChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n private readonly paletteService = inject(AXP_THEME_PALETTE_PROVIDER);\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected selectedPalette = signal<AXPThemePalette | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedPalette.set(\n this.palettes().find((p) => p.name === this.getValue()) ??\n this.palettes().find((p) => p.name === 'default') ??\n this.palettes()[0],\n );\n }\n });\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n const palletsProviderInstance = await this.paletteService;\n this.palettes.set(await palletsProviderInstance.getList());\n }\n\n protected onPaletteClick(palette: AXPThemePalette) {\n this.setValue(palette.name);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPThemePaletteChooserWidget: AXPWidgetConfig = {\n name: \"theme-palette-chooser\",\n title: \"Theme Palette Chooser\",\n icon: \"fa-light fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-palette-chooser-widget.component').then((c) => c.AXPThemePaletteChooserWidgetComponent),\n },\n }\n}","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPMenuAppearance, normalizeMenuAppearance } from '../../contracts/theme.types';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\n\ninterface MenuAppearanceOption {\n id: AXPMenuAppearance;\n icon: string;\n labelKey: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div (click)=\"onModeClick(mode)\" [class.--selected]=\"mode.id === selectedMode()?.id\">\n <div>\n <i [class]=\"mode.icon\"></i>\n </div>\n <span>{{ mode.labelKey | translate | async }}</span>\n </div>\n }\n `,\n styleUrl: './menu-appearance-chooser-widget.component.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPMenuAppearanceChooserWidgetComponent extends AXPValueWidgetComponent<\n string\n> {\n protected readonly modes = signal<MenuAppearanceOption[]>([\n {\n id: 'dark',\n icon: 'fa-light fa-moon',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.dark',\n },\n {\n id: 'light',\n icon: 'fa-light fa-sun',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.light',\n },\n {\n id: 'brand-light',\n icon: 'fa-light fa-palette',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.brand-light',\n },\n {\n id: 'brand-dark',\n icon: 'fa-light fa-moon-stars',\n labelKey: '@layout:settings.appearance.items.root-menu.dark.options.brand-dark',\n },\n ]);\n\n protected selectedMode = signal<MenuAppearanceOption | null>(null);\n\n #eff = effect(() => {\n const value = this.getValue();\n const normalized = normalizeMenuAppearance(value, 'dark');\n this.selectedMode.set(\n this.modes().find((m) => m.id === normalized) ?? this.modes()[0],\n );\n });\n\n protected onModeClick(mode: MenuAppearanceOption): void {\n this.setValue(mode.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPMenuAppearanceChooserWidget: AXPWidgetConfig = {\n name: 'menu-appearance-chooser',\n title: 'Menu Appearance Chooser',\n icon: 'fa-light fa-paintbrush',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () =>\n import('./menu-appearance-chooser-widget.component').then(\n (c) => c.AXPMenuAppearanceChooserWidgetComponent,\n ),\n },\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n menuAppearanceChooser: 'menu-appearance-chooser';\n }\n}\n\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPHeaderAppearance, normalizeHeaderAppearance } from '../../contracts/theme.types';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\n\ninterface HeaderAppearanceOption {\n id: AXPHeaderAppearance;\n icon: string;\n labelKey: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div\n (click)=\"onModeClick(mode)\"\n [class.--selected]=\"mode.id === selectedMode()?.id\"\n class=\"axp-header-appearance-chooser__option\"\n >\n <i [class]=\"mode.icon\"></i>\n <span>{{ mode.labelKey | translate | async }}</span>\n </div>\n }\n `,\n styleUrl: './header-appearance-chooser-widget.component.css',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPHeaderAppearanceChooserWidgetComponent extends AXPValueWidgetComponent<\n string\n> {\n protected readonly modes = signal<HeaderAppearanceOption[]>([\n {\n id: 'brand',\n icon: 'fa-light fa-palette',\n labelKey: '@layout:settings.appearance.items.header.appearance.options.brand',\n },\n {\n id: 'simple',\n icon: 'fa-light fa-window-maximize',\n labelKey: '@layout:settings.appearance.items.header.appearance.options.simple',\n },\n ]);\n\n protected selectedMode = signal<HeaderAppearanceOption | null>(null);\n\n #eff = effect(() => {\n const value = this.getValue();\n const normalized = normalizeHeaderAppearance(value, 'brand');\n this.selectedMode.set(\n this.modes().find((m) => m.id === normalized) ?? this.modes()[0],\n );\n });\n\n protected onModeClick(mode: HeaderAppearanceOption): void {\n this.setValue(mode.id);\n }\n}\n","import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widget-core';\n\nexport const AXPHeaderAppearanceChooserWidget: AXPWidgetConfig = {\n name: 'header-appearance-chooser',\n title: 'Header Appearance Chooser',\n icon: 'fa-light fa-window-maximize',\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () =>\n import('./header-appearance-chooser-widget.component').then(\n (c) => c.AXPHeaderAppearanceChooserWidgetComponent,\n ),\n },\n },\n};\n\ndeclare module '@acorex-platform/framework-shared/widget-core' {\n interface AXPWidgetTypesMap {\n headerAppearanceChooser: 'header-appearance-chooser';\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPFontSizeChooserWidget } from './widgets/font-size-chooser';\nimport { AXPFontStyleChooserWidget } from './widgets/font-style-chooser';\nimport { AXPIconChooserWidget } from './widgets/icon-chooser';\nimport { AXPMenuOrientationChooserWidget } from './widgets/menu-orientation-chooser';\nimport { AXPThemeColorChooserWidgetConfig } from './widgets/theme-color-chooser';\nimport { AXPThemeModeChooserWidget } from './widgets/theme-mode-chooser';\nimport { AXPThemePaletteChooserWidget } from './widgets/theme-palette-chooser';\nimport { AXPMenuAppearanceChooserWidget } from './widgets/menu-appearance-chooser';\nimport { AXPHeaderAppearanceChooserWidget } from './widgets/header-appearance-chooser';\n\n//#endregion\n\n//#region ---- Theme Widgets Provider ----\n\nconst WIDGETS = [\n AXPThemePaletteChooserWidget,\n AXPThemeModeChooserWidget,\n AXPMenuAppearanceChooserWidget,\n AXPHeaderAppearanceChooserWidget,\n AXPMenuOrientationChooserWidget,\n AXPFontSizeChooserWidget,\n AXPFontStyleChooserWidget,\n AXPIconChooserWidget,\n AXPThemeColorChooserWidgetConfig,\n];\n\n@Injectable()\nexport class AXPThemesSharedWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","import {\n AXP_SETTING_DEFINITION_PROVIDER,\n AXPPlatformSettingsLoadState,\n} from '@acorex-platform/framework-client/common';\nimport {\n AXPAppStartUpService,\n AXP_APP_STARTUP_PRIORITY,\n AXPComponentSlotModule,\n AXP_LOGO_THEME_RESOLVER,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { inject, Injector, NgModule } from '@angular/core';\nimport { AXPThemeSlotComponent } from './slots/theme-slot.component';\nimport { AXPLayoutThemeService } from './theme.service';\nimport { provideDefaultIconChooser } from './widgets/icon-chooser';\nimport { AXPThemesSharedWidgetsProvider } from './widget-definition.provider';\n@NgModule({\n imports: [\n AXPComponentSlotModule.forRoot({\n 'root-header-end': [\n {\n priority: 50,\n name: 'theme',\n component: AXPThemeSlotComponent,\n },\n ],\n }),\n AXPWidgetCoreModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_LOGO_THEME_RESOLVER,\n useExisting: AXPLayoutThemeService,\n },\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXPThemesSharedWidgetsProvider, multi: true },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./settings.provider')).AXPThemeSettingProvider;\n return new provider(injector);\n },\n multi: true,\n },\n ...provideDefaultIconChooser(),\n ],\n})\nexport class AXPThemesSharedModule {\n constructor(appInitService: AXPAppStartUpService, injector: Injector) {\n const service = injector.get(AXPLayoutThemeService);\n const platformSettingsLoadState = injector.get(AXPPlatformSettingsLoadState, null);\n appInitService.registerTask({\n name: 'layout-theme',\n statusText: '@layout:app-startup.applying-theme-settings',\n priority: AXP_APP_STARTUP_PRIORITY.layoutTheme,\n run: async () => {\n if (\n platformSettingsLoadState?.hasFailure() ||\n platformSettingsLoadState?.hasPendingOfflineContinue() ||\n platformSettingsLoadState?.isOfflineMode()\n ) {\n return;\n }\n const LAYOUT_THEME_STARTUP_TIMEOUT_MS = 8_000;\n await Promise.race([\n service.loadSettings().catch((error: unknown) => {\n console.warn('layout-theme settings apply failed', error);\n }),\n new Promise<void>((resolve) => {\n setTimeout(resolve, LAYOUT_THEME_STARTUP_TIMEOUT_MS);\n }),\n ]);\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i2","i3","i4","i1"],"mappings":"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"}
|