{"version":3,"file":"edsis-angular-block-themes.mjs","sources":["../../../library/angular/block/themes/theme-appearance-preset.service.ts","../../../library/angular/block/themes/app-preferences.config.ts","../../../library/angular/block/themes/app-preferences-panel.service.ts","../../../library/angular/block/themes/app-preference-setting-group.component.ts","../../../library/angular/block/themes/app-preferences-surface.component.ts","../../../library/angular/block/themes/app-preferences-surface.component.html","../../../library/angular/block/themes/app-preferences.component.ts","../../../library/angular/block/themes/app-preferences-trigger.directive.ts","../../../library/angular/block/themes/runtime-theme-device.provider.ts","../../../library/angular/block/themes/edsis-angular-block-themes.ts"],"sourcesContent":["import { effect, inject, Service } from '@angular/core';\nimport {\n  NavigationService,\n  type NavigationDockbarMode,\n  type NavigationOrientation,\n  type NavigationPosition,\n  type NavigationState,\n  type NavigationType,\n} from '@edsis/navigation/service';\nimport {\n  LayoutService,\n  isUiLayoutSurface,\n  isUiLayoutType,\n  isUiLayoutWidth,\n} from '@edsis/theme/layout';\nimport {\n  DEFAULT_THEME_BRAND,\n  DEFAULT_THEME_COLOR,\n  DEFAULT_THEME_MODE,\n  ThemeBrandService,\n  ThemeColorService,\n  ThemeModeService,\n  ThemeRadiusService,\n  ThemeSpaceService,\n  ThemeAppearanceService,\n  isThemeBrand,\n  isThemeColor,\n  isThemeMode,\n  isThemeRadius,\n  isThemeSpace,\n  themeAppearancePresetEntry,\n  type ThemeAppearance,\n} from '@edsis/theme/styles';\nimport {\n  LAYOUT_DEFAULT_SURFACE,\n  LAYOUT_DEFAULT_TYPE,\n  LAYOUT_DEFAULT_WIDTH,\n} from '@edsis/theme/layout/types';\n\nimport { APP_PREFERENCES_CONFIG } from './app-preferences.config';\n\nconst PRIMARY_NAVIGATION_ID = 'main';\nconst NAVIGATION_TYPES = ['sidebar', 'dockbar', 'navbar', 'flyout'] as const;\nconst NAVIGATION_ORIENTATIONS = ['vertical', 'horizontal'] as const;\nconst NAVIGATION_POSITIONS = ['left', 'right', 'top', 'bottom'] as const;\nconst NAVIGATION_DOCKBAR_MODES = ['default', 'drawer', 'sticky'] as const;\n\n@Service()\nexport class ThemeAppearancePresetService {\n  private readonly config = inject(APP_PREFERENCES_CONFIG, { optional: true });\n  private readonly themeAppearance = inject(ThemeAppearanceService);\n  private readonly themeMode = inject(ThemeModeService);\n  private readonly themeSpace = inject(ThemeSpaceService);\n  private readonly themeRadius = inject(ThemeRadiusService);\n  private readonly themeColor = inject(ThemeColorService);\n  private readonly themeBrand = inject(ThemeBrandService);\n  private readonly layout = inject(LayoutService);\n  private readonly navigation = inject(NavigationService);\n\n  constructor() {\n    let previousAppearance = this.themeAppearance.appearance();\n\n    if (this.themeAppearance.hasStoredAppearance()) {\n      this.enforceLockedValues(previousAppearance);\n    } else {\n      this.applyPreset(previousAppearance);\n    }\n\n    effect(() => {\n      const appearance = this.themeAppearance.appearance();\n\n      if (appearance === previousAppearance) return;\n\n      previousAppearance = appearance;\n      this.applyPreset(appearance);\n    });\n\n    effect(() => this.enforceLockedValues(this.themeAppearance.appearance()));\n  }\n\n  private applyPreset(themeAppearance: ThemeAppearance): void {\n    this.applyThemeValues(themeAppearance);\n    this.applyLayoutValues(themeAppearance);\n    this.applyNavigationValues(themeAppearance);\n  }\n\n  private applyThemeValues(themeAppearance: ThemeAppearance): void {\n    const mode = this.valueFor(themeAppearance, 'theme-mode', this.defaultMode());\n    if (isThemeMode(mode)) this.themeMode.setMode(mode);\n\n    const space = this.valueFor(themeAppearance, 'theme-space', this.defaultSpace());\n    if (isThemeSpace(space)) this.themeSpace.setSpace(space);\n\n    const radius = this.valueFor(themeAppearance, 'theme-radius', this.defaultRadius());\n    if (isThemeRadius(radius)) this.themeRadius.setRadius(radius);\n\n    const color = this.valueFor(themeAppearance, 'theme-color', this.defaultColor());\n    if (isThemeColor(color)) this.themeColor.setColor(color);\n\n    const brand = this.valueFor(themeAppearance, 'theme-brand', this.defaultBrand());\n    if (isThemeBrand(brand)) this.themeBrand.setBrand(brand);\n  }\n\n  private applyLayoutValues(themeAppearance: ThemeAppearance): void {\n    const type = this.valueFor(themeAppearance, 'layout-type', this.defaultLayoutType());\n    if (isUiLayoutType(type)) this.layout.setType(type);\n\n    const width = this.valueFor(themeAppearance, 'layout-width', this.defaultLayoutWidth());\n    if (isUiLayoutWidth(width)) this.layout.setWidth(width);\n\n    const surface = this.valueFor(themeAppearance, 'layout-surface', this.defaultLayoutSurface());\n    if (isUiLayoutSurface(surface)) this.layout.setSurface(surface);\n  }\n\n  private applyNavigationValues(themeAppearance: ThemeAppearance): void {\n    const orientation = this.valueFor(\n      themeAppearance,\n      'nav-orientation',\n      this.defaultNavigationOrientation(),\n    );\n    const type = this.valueFor(themeAppearance, 'nav-type', this.defaultNavigationType());\n    const position = this.valueFor(\n      themeAppearance,\n      'nav-position',\n      this.defaultNavigationPosition(),\n    );\n    const typeMode = this.valueFor(themeAppearance, 'nav-type-mode', 'default');\n\n    this.navigation.update(PRIMARY_NAVIGATION_ID, {\n      orientation: isNavigationOrientation(orientation)\n        ? orientation\n        : this.defaultNavigationOrientation(),\n      type: isNavigationType(type) ? type : this.defaultNavigationType(),\n      position: isNavigationPosition(position) ? position : this.defaultNavigationPosition(),\n      collapsed:\n        typeMode === 'collapsed'\n          ? true\n          : typeMode === 'expanded'\n            ? false\n            : this.defaultNavigationCollapsed(),\n      dockbarMode: isNavigationDockbarMode(typeMode)\n        ? typeMode\n        : this.defaultNavigationDockbarMode(),\n    });\n  }\n\n  private enforceLockedValues(themeAppearance: ThemeAppearance): void {\n    const mode = this.lockedValueFor(themeAppearance, 'theme-mode');\n    if (isThemeMode(mode) && this.themeMode.mode() !== mode) this.themeMode.setMode(mode);\n\n    const space = this.lockedValueFor(themeAppearance, 'theme-space');\n    if (isThemeSpace(space) && this.themeSpace.space() !== space) this.themeSpace.setSpace(space);\n\n    const radius = this.lockedValueFor(themeAppearance, 'theme-radius');\n    if (isThemeRadius(radius) && this.themeRadius.radius() !== radius)\n      this.themeRadius.setRadius(radius);\n\n    const color = this.lockedValueFor(themeAppearance, 'theme-color');\n    if (isThemeColor(color) && this.themeColor.color() !== color) this.themeColor.setColor(color);\n\n    const brand = this.lockedValueFor(themeAppearance, 'theme-brand');\n    if (isThemeBrand(brand) && this.themeBrand.brand() !== brand) this.themeBrand.setBrand(brand);\n\n    const type = this.lockedValueFor(themeAppearance, 'layout-type');\n    if (isUiLayoutType(type) && this.layout.type() !== type) this.layout.setType(type);\n\n    const width = this.lockedValueFor(themeAppearance, 'layout-width');\n    if (isUiLayoutWidth(width) && this.layout.width() !== width) this.layout.setWidth(width);\n\n    const surface = this.lockedValueFor(themeAppearance, 'layout-surface');\n    if (isUiLayoutSurface(surface) && this.layout.surface() !== surface)\n      this.layout.setSurface(surface);\n\n    const orientation = this.lockedValueFor(themeAppearance, 'nav-orientation');\n    const navigationType = this.lockedValueFor(themeAppearance, 'nav-type');\n    const position = this.lockedValueFor(themeAppearance, 'nav-position');\n    const typeMode = this.lockedValueFor(themeAppearance, 'nav-type-mode');\n    const currentNavigationState = this.navigation.currentState(PRIMARY_NAVIGATION_ID);\n    const navigationState: NavigationState = currentNavigationState ?? {\n      id: PRIMARY_NAVIGATION_ID,\n      orientation: 'vertical',\n      type: 'sidebar',\n      position: 'left',\n      collapsed: false,\n      dockbarMode: 'default',\n    };\n    const navigationUpdate = {\n      ...(isNavigationOrientation(orientation) && navigationState.orientation !== orientation\n        ? { orientation }\n        : {}),\n      ...(isNavigationType(navigationType) && navigationState.type !== navigationType\n        ? { type: navigationType }\n        : {}),\n      ...(isNavigationPosition(position) && navigationState.position !== position\n        ? { position }\n        : {}),\n      ...(typeMode === 'collapsed' && !navigationState.collapsed\n        ? { collapsed: true }\n        : typeMode === 'expanded' && navigationState.collapsed\n          ? { collapsed: false }\n          : typeMode === 'default' &&\n              navigationState.collapsed !== this.defaultNavigationCollapsed()\n            ? { collapsed: this.defaultNavigationCollapsed() }\n            : {}),\n      ...(isNavigationDockbarMode(typeMode) && navigationState.dockbarMode !== typeMode\n        ? { dockbarMode: typeMode }\n        : typeMode === 'default' &&\n            navigationState.dockbarMode !== this.defaultNavigationDockbarMode()\n          ? { dockbarMode: this.defaultNavigationDockbarMode() }\n          : {}),\n    };\n\n    const hasLockedNavigationValue = [orientation, navigationType, position, typeMode].some(\n      (value) => value !== null,\n    );\n\n    if (\n      Object.keys(navigationUpdate).length > 0 ||\n      (currentNavigationState === null && hasLockedNavigationValue)\n    ) {\n      this.navigation.update(PRIMARY_NAVIGATION_ID, navigationUpdate);\n    }\n  }\n\n  private lockedValueFor(\n    themeAppearance: ThemeAppearance,\n    key: Parameters<typeof themeAppearancePresetEntry>[1],\n  ): string | null {\n    const entry = themeAppearancePresetEntry(themeAppearance, key);\n\n    return entry.control === 'fix' ? entry.value : null;\n  }\n\n  private valueFor(\n    themeAppearance: ThemeAppearance,\n    key: Parameters<typeof themeAppearancePresetEntry>[1],\n    fallback: string,\n  ): string {\n    const value = themeAppearancePresetEntry(themeAppearance, key).value;\n\n    return value === 'default' ? fallback : value;\n  }\n\n  private defaultMode(): string {\n    return this.config?.defaults?.theme.mode ?? DEFAULT_THEME_MODE;\n  }\n\n  private defaultSpace(): string {\n    return this.config?.defaults?.theme.space ?? 'normal';\n  }\n\n  private defaultRadius(): string {\n    return this.config?.defaults?.theme.radius ?? 'medium';\n  }\n\n  private defaultColor(): string {\n    return this.config?.defaults?.theme.color ?? DEFAULT_THEME_COLOR;\n  }\n\n  private defaultBrand(): string {\n    return this.config?.defaults?.theme.brand ?? DEFAULT_THEME_BRAND;\n  }\n\n  private defaultLayoutType(): string {\n    return this.config?.defaults?.layout.type ?? LAYOUT_DEFAULT_TYPE;\n  }\n\n  private defaultLayoutWidth(): string {\n    return this.config?.defaults?.layout.width ?? LAYOUT_DEFAULT_WIDTH;\n  }\n\n  private defaultLayoutSurface(): string {\n    return this.config?.defaults?.layout.surface ?? LAYOUT_DEFAULT_SURFACE;\n  }\n\n  private defaultNavigationOrientation(): NavigationOrientation {\n    return this.config?.defaults?.navigation.orientation ?? 'vertical';\n  }\n\n  private defaultNavigationType(): NavigationType {\n    return this.config?.defaults?.navigation.type ?? 'sidebar';\n  }\n\n  private defaultNavigationPosition(): NavigationPosition {\n    return this.config?.defaults?.navigation.position ?? 'left';\n  }\n\n  private defaultNavigationCollapsed(): boolean {\n    return this.config?.defaults?.navigation.collapsed ?? false;\n  }\n\n  private defaultNavigationDockbarMode(): NavigationDockbarMode {\n    return this.config?.defaults?.navigation.dockbarMode ?? 'default';\n  }\n}\n\nfunction isNavigationType(value: string | null): value is NavigationType {\n  return value !== null && (NAVIGATION_TYPES as readonly string[]).includes(value);\n}\n\nfunction isNavigationOrientation(value: string | null): value is NavigationOrientation {\n  return value !== null && (NAVIGATION_ORIENTATIONS as readonly string[]).includes(value);\n}\n\nfunction isNavigationPosition(value: string | null): value is NavigationPosition {\n  return value !== null && (NAVIGATION_POSITIONS as readonly string[]).includes(value);\n}\n\nfunction isNavigationDockbarMode(value: string | null): value is NavigationDockbarMode {\n  return value !== null && (NAVIGATION_DOCKBAR_MODES as readonly string[]).includes(value);\n}\n","import {\n  inject,\n  InjectionToken,\n  makeEnvironmentProviders,\n  provideEnvironmentInitializer,\n} from '@angular/core';\nimport type {\n  NavigationDockbarMode,\n  NavigationOrientation,\n  NavigationPosition,\n  NavigationType,\n} from '@edsis/navigation/service';\nimport type { LayoutSurface, LayoutType, LayoutWidth } from '@edsis/theme/layout/types';\nimport type {\n  ThemeBrand,\n  ThemeColor,\n  ThemeMode,\n  ThemeRadius,\n  ThemeSpace,\n  ThemeAppearance,\n} from '@edsis/theme/styles';\n\nimport { ThemeAppearancePresetService } from './theme-appearance-preset.service';\n\nexport interface AppPreferencesDefaults {\n  readonly theme: {\n    readonly mode: ThemeMode;\n    readonly space: ThemeSpace;\n    readonly radius: ThemeRadius;\n    readonly appearance: ThemeAppearance;\n    readonly color: ThemeColor;\n    readonly brand: ThemeBrand;\n  };\n  readonly layout: {\n    readonly surface: LayoutSurface;\n    readonly width: LayoutWidth;\n    readonly type: LayoutType;\n  };\n  readonly navigation: {\n    readonly orientation: NavigationOrientation;\n    readonly type: NavigationType;\n    readonly position: NavigationPosition;\n    readonly collapsed: boolean;\n    readonly dockbarMode: NavigationDockbarMode;\n  };\n}\n\nexport interface AppPreferencesConfig {\n  readonly defaults?: AppPreferencesDefaults;\n}\n\nexport const APP_PREFERENCES_CONFIG = new InjectionToken<AppPreferencesConfig>(\n  'APP_PREFERENCES_CONFIG',\n);\n\nexport function provideAppPreferences(config: AppPreferencesConfig = {}) {\n  return makeEnvironmentProviders([\n    { provide: APP_PREFERENCES_CONFIG, useValue: config },\n    provideEnvironmentInitializer(() => {\n      inject(ThemeAppearancePresetService);\n    }),\n  ]);\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Injector,\n  Service,\n  afterNextRender,\n  computed,\n  effect,\n  inject,\n  linkedSignal,\n} from '@angular/core';\nimport { LayoutService } from '@edsis/theme/layout/services';\n\nconst NAVIGATION_FOCUS_SELECTOR =\n  '[data-navigation-id=\"main\"] a[href]:not([aria-disabled=\"true\"]), [data-navigation-id=\"main\"] button:not(:disabled):not([aria-disabled=\"true\"])';\nconst CONTENT_FOCUS_SELECTOR = '[data-block-shell-content][tabindex=\"-1\"]';\n\n@Service()\nexport class AppPreferencesPanelService {\n  private readonly document = inject(DOCUMENT, { optional: true });\n  private readonly injector = inject(Injector);\n  private readonly layout = inject(LayoutService);\n  private readonly openedState = linkedSignal({\n    source: this.layout.type,\n    computation: () => false,\n  });\n  private origin: HTMLElement | null = null;\n  private previouslyOpened = false;\n  private finalizationPending = false;\n\n  readonly supported = computed(\n    () => this.layout.type() === 'vertical' || this.layout.type() === 'horizontal',\n  );\n  readonly opened = this.openedState.asReadonly();\n\n  constructor() {\n    effect(() => {\n      const opened = this.openedState();\n\n      if (this.previouslyOpened && !opened) {\n        this.finalizeClose();\n      }\n\n      this.previouslyOpened = opened;\n    });\n  }\n\n  open(trigger?: HTMLElement): boolean {\n    if (!this.supported()) {\n      return false;\n    }\n\n    if (!this.openedState() && !this.origin) {\n      this.origin = trigger ?? this.activeElement();\n    }\n\n    this.openedState.set(true);\n    return true;\n  }\n\n  close(): void {\n    this.openedState.set(false);\n  }\n\n  toggle(trigger?: HTMLElement): boolean {\n    if (this.openedState()) {\n      this.close();\n      return false;\n    }\n\n    return this.open(trigger);\n  }\n\n  private finalizeClose(): void {\n    if (this.finalizationPending) {\n      return;\n    }\n\n    this.finalizationPending = true;\n    afterNextRender(\n      () => {\n        this.finalizationPending = false;\n        this.restoreFocus();\n        this.origin = null;\n      },\n      { injector: this.injector },\n    );\n  }\n\n  private restoreFocus(): void {\n    const document = this.document;\n    if (!document) {\n      return;\n    }\n\n    const candidates = [\n      this.origin,\n      ...Array.from(document.querySelectorAll<HTMLElement>(NAVIGATION_FOCUS_SELECTOR)),\n      document.querySelector<HTMLElement>(CONTENT_FOCUS_SELECTOR),\n    ];\n\n    for (const candidate of candidates) {\n      if (!this.canFocus(candidate)) {\n        continue;\n      }\n\n      candidate.focus({ preventScroll: true });\n      if (document.activeElement === candidate) {\n        return;\n      }\n    }\n  }\n\n  private activeElement(): HTMLElement | null {\n    const activeElement = this.document?.activeElement;\n    return activeElement instanceof HTMLElement ? activeElement : null;\n  }\n\n  private canFocus(element: HTMLElement | null): element is HTMLElement {\n    if (!element?.isConnected || element.matches(':disabled, [aria-disabled=\"true\"]')) {\n      return false;\n    }\n\n    if (element.closest('[hidden], [inert], [aria-hidden=\"true\"]')) {\n      return false;\n    }\n\n    const view = this.document?.defaultView;\n    return !view || element.getClientRects().length > 0;\n  }\n}\n","import { Component, input, output } from '@angular/core';\nimport { IconComponent } from '@edsis/component/icon';\nimport { ToggleGroupComponent, ToggleGroupItemDirective } from '@edsis/component/toggle-group';\nimport { TooltipDirective } from '@edsis/component/tooltip';\n\nexport interface AppPreferenceOption {\n  readonly value: string;\n  readonly label: string;\n  readonly icon: string;\n}\n\n@Component({\n  selector: 'app-preference-setting-group',\n  imports: [IconComponent, ToggleGroupComponent, ToggleGroupItemDirective, TooltipDirective],\n  template: `\n    <section class=\"border-b border-border/65 px-3 py-2.5 last:border-b-0\">\n      <div class=\"flex items-start justify-between gap-3\">\n        <div class=\"min-w-0\">\n          <h3 [id]=\"headingId()\" class=\"text-sm font-medium text-foreground\">{{ title() }}</h3>\n          @if (description()) {\n            <p class=\"mt-1 text-xs leading-4 text-muted-foreground\">{{ description() }}</p>\n          }\n        </div>\n\n        <span\n          class=\"flex shrink-0 items-center gap-1 font-mono text-xs text-muted-foreground\"\n          [attr.aria-label]=\"locked() ? activeLabel() + ', dikunci oleh gaya tema' : null\"\n        >\n          {{ activeLabel() }}\n          @if (locked()) {\n            <Icon name=\"lock\" [size]=\"14\" aria-hidden=\"true\" />\n          }\n        </span>\n      </div>\n\n      <ToggleGroup\n        type=\"single\"\n        variant=\"segmented\"\n        [value]=\"selected()\"\n        [disabled]=\"locked()\"\n        [attr.aria-labelledby]=\"headingId()\"\n        class=\"mt-2 grid w-full grid-flow-col auto-cols-fr gap-0\"\n        (valueChange)=\"onValueChange($event)\"\n      >\n        @for (option of options(); track option.value) {\n          <button\n            ToggleGroupItem\n            [value]=\"option.value\"\n            [Tooltip]=\"option.label\"\n            [attr.aria-label]=\"option.label\"\n            [attr.title]=\"option.label\"\n            class=\"min-h-8 min-w-0 px-1.5 py-1\"\n          >\n            <Icon [name]=\"option.icon\" [size]=\"16\" />\n          </button>\n        }\n      </ToggleGroup>\n    </section>\n  `,\n})\nexport class AppPreferenceSettingGroupComponent {\n  readonly title = input.required<string>();\n  readonly description = input<string | null>(null);\n  readonly activeLabel = input.required<string>();\n  readonly options = input.required<readonly AppPreferenceOption[]>();\n  readonly selected = input.required<string>();\n  readonly headingId = input.required<string>();\n  readonly locked = input(false);\n  readonly optionSelected = output<string>();\n\n  protected onValueChange(value: string | null): void {\n    if (value !== null && !this.locked()) {\n      this.optionSelected.emit(value);\n    }\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  afterNextRender,\n  computed,\n  inject,\n  output,\n  signal,\n} from '@angular/core';\nimport { ButtonComponent } from '@edsis/component/button';\nimport { IconComponent } from '@edsis/component/icon';\nimport {\n  NavigationService,\n  type NavigationDockbarMode,\n  type NavigationOrientation,\n  type NavigationPosition,\n  type NavigationState,\n  type NavigationType,\n  type NavigationVerticalType,\n} from '@edsis/navigation/service';\nimport {\n  LayoutService,\n  isUiLayoutSurface,\n  isUiLayoutType,\n  isUiLayoutWidth,\n} from '@edsis/theme/layout';\nimport {\n  PageComponent,\n  PageContentComponent,\n  PageFooterComponent,\n  PageHeaderComponent,\n} from '@edsis/theme/page';\nimport {\n  THEME_BRANDS,\n  THEME_COLORS,\n  THEME_MODES,\n  THEME_RADII,\n  THEME_SPACES,\n  THEME_APPEARANCES,\n  ThemeBrandService,\n  ThemeColorService,\n  ThemeModeService,\n  ThemeRadiusService,\n  ThemeSpaceService,\n  ThemeAppearanceService,\n  isThemeBrand,\n  isThemeColor,\n  isThemeMode,\n  isThemeRadius,\n  isThemeSpace,\n  isThemeAppearance,\n  isThemeAppearanceSettingLocked,\n  type ThemeAppearanceSettingKey,\n} from '@edsis/theme/styles';\n\nimport { APP_PREFERENCES_CONFIG } from './app-preferences.config';\nimport { AppPreferencesPanelService } from './app-preferences-panel.service';\nimport {\n  AppPreferenceSettingGroupComponent,\n  type AppPreferenceOption,\n} from './app-preference-setting-group.component';\n\nconst PRIMARY_NAVIGATION_ID = 'main';\nconst VERTICAL_NAVIGATION_TYPES = ['sidebar', 'dockbar'] as const;\nconst HORIZONTAL_NAVIGATION_TYPES = ['navbar', 'flyout'] as const;\nconst NAVIGATION_LAYOUT_TYPES = ['vertical', 'horizontal'] as const;\nconst DOCKBAR_MODES = ['default', 'sticky', 'drawer'] as const;\n\nconst THEME_APPEARANCE_OPTIONS = {\n  browser: { label: 'Browser', icon: 'language' },\n  rail: { label: 'Rail', icon: 'view_sidebar' },\n  tablet: { label: 'Tablet', icon: 'tablet_android' },\n  desktop: { label: 'Desktop', icon: 'desktop_windows' },\n} as const;\nconst THEME_MODE_OPTIONS = {\n  light: { label: 'Terang', icon: 'light_mode' },\n  dark: { label: 'Gelap', icon: 'dark_mode' },\n  system: { label: 'Sistem', icon: 'contrast' },\n} as const;\nconst THEME_COLOR_OPTIONS = {\n  default: { label: 'Default', icon: 'format_color_fill' },\n} as const;\nconst THEME_BRAND_OPTIONS = {\n  default: { label: 'Default', icon: 'branding_watermark' },\n} as const;\nconst THEME_SPACE_OPTIONS = {\n  normal: { label: 'Normal', icon: 'density_large' },\n  compact: { label: 'Ringkas', icon: 'density_small' },\n} as const;\nconst THEME_RADIUS_OPTIONS = {\n  none: { label: 'Tanpa radius', icon: 'crop_square' },\n  small: { label: 'Kecil', icon: 'rounded_corner' },\n  medium: { label: 'Sedang', icon: 'rounded_corner' },\n  large: { label: 'Besar', icon: 'rounded_corner' },\n} as const;\nconst LAYOUT_SURFACE_OPTIONS = {\n  base: { label: 'Dasar', icon: 'crop_square' },\n  flat: { label: 'Datar', icon: 'crop_16_9' },\n  grid: { label: 'Grid', icon: 'grid_4x4' },\n} as const;\nconst LAYOUT_WIDTH_OPTIONS = {\n  full: { label: 'Penuh', icon: 'width_full' },\n  wide: { label: 'Lebar', icon: 'width_wide' },\n  container: { label: 'Container', icon: 'width_normal' },\n  fluid: { label: 'Fluid', icon: 'fit_screen' },\n} as const;\nconst LAYOUT_TYPE_OPTIONS = {\n  vertical: { label: 'Vertikal', icon: 'view_sidebar' },\n  horizontal: { label: 'Horizontal', icon: 'view_stream' },\n} as const;\nconst NAVIGATION_TYPE_OPTIONS = {\n  sidebar: { label: 'Sidebar', icon: 'left_panel_open' },\n  dockbar: { label: 'Dockbar', icon: 'dock_to_left' },\n  navbar: { label: 'Navbar', icon: 'top_panel_open' },\n  flyout: { label: 'Flyout', icon: 'menu_open' },\n} as const;\nconst NAVIGATION_POSITION_OPTIONS = {\n  left: { label: 'Kiri', icon: 'align_horizontal_left' },\n  right: { label: 'Kanan', icon: 'align_horizontal_right' },\n  top: { label: 'Atas', icon: 'vertical_align_top' },\n  bottom: { label: 'Bawah', icon: 'vertical_align_bottom' },\n} as const;\nconst DOCKBAR_MODE_OPTIONS = {\n  default: { label: 'Default', icon: 'vertical_align_center' },\n  sticky: { label: 'Melekat', icon: 'push_pin' },\n  drawer: { label: 'Drawer', icon: 'left_panel_open' },\n} as const;\n\nfunction toOptions(\n  values: readonly string[],\n  options: Record<string, { readonly label: string; readonly icon: string }>,\n): readonly AppPreferenceOption[] {\n  return values.map((value) => ({\n    value,\n    label: options[value]?.label ?? value,\n    icon: options[value]?.icon ?? 'tune',\n  }));\n}\n\n@Component({\n  selector: 'app-preferences-surface',\n  imports: [\n    AppPreferenceSettingGroupComponent,\n    ButtonComponent,\n    IconComponent,\n    PageComponent,\n    PageContentComponent,\n    PageFooterComponent,\n    PageHeaderComponent,\n  ],\n  host: {\n    class: 'block h-full min-h-0 w-full',\n  },\n  templateUrl: './app-preferences-surface.component.html',\n})\nexport class AppPreferencesSurfaceComponent {\n  private readonly config = inject(APP_PREFERENCES_CONFIG, { optional: true });\n  private readonly preferences = inject(AppPreferencesPanelService);\n  private readonly themeMode = inject(ThemeModeService);\n  private readonly themeSpace = inject(ThemeSpaceService);\n  private readonly themeRadius = inject(ThemeRadiusService);\n  private readonly themeAppearanceService = inject(ThemeAppearanceService);\n  private readonly themeColor = inject(ThemeColorService);\n  private readonly themeBrand = inject(ThemeBrandService);\n  private readonly layout = inject(LayoutService);\n  private readonly navigation = inject(NavigationService);\n  private readonly host = inject(ElementRef<HTMLElement>);\n\n  readonly closeRequested = output<void>();\n  protected readonly announcement = signal('');\n  protected readonly defaults = this.config?.defaults ?? null;\n  protected readonly hasDefaults = computed(() => this.defaults !== null);\n  protected readonly mode = this.themeMode.mode;\n  protected readonly space = this.themeSpace.space;\n  protected readonly radius = this.themeRadius.radius;\n  protected readonly themeAppearance = this.themeAppearanceService.appearance;\n  protected readonly color = this.themeColor.color;\n  protected readonly brand = this.themeBrand.brand;\n  protected readonly surface = this.layout.surface;\n  protected readonly width = this.layout.width;\n  protected readonly layoutType = this.layout.type;\n  protected readonly navigationState = computed<NavigationState>(\n    () =>\n      this.navigation.state(PRIMARY_NAVIGATION_ID)() ?? {\n        id: PRIMARY_NAVIGATION_ID,\n        orientation: 'vertical',\n        type: 'sidebar',\n        position: 'left',\n        collapsed: false,\n        dockbarMode: 'default',\n      },\n  );\n\n  protected readonly themeAppearanceOptions = toOptions(\n    THEME_APPEARANCES,\n    THEME_APPEARANCE_OPTIONS,\n  );\n  protected readonly modeOptions = toOptions(THEME_MODES, THEME_MODE_OPTIONS);\n  protected readonly colorOptions = toOptions(THEME_COLORS, THEME_COLOR_OPTIONS);\n  protected readonly brandOptions = toOptions(THEME_BRANDS, THEME_BRAND_OPTIONS);\n  protected readonly spaceOptions = toOptions(THEME_SPACES, THEME_SPACE_OPTIONS);\n  protected readonly radiusOptions = toOptions(THEME_RADII, THEME_RADIUS_OPTIONS);\n  protected readonly surfaceOptions = toOptions(['base', 'flat', 'grid'], LAYOUT_SURFACE_OPTIONS);\n  protected readonly widthOptions = toOptions(\n    ['full', 'wide', 'container', 'fluid'],\n    LAYOUT_WIDTH_OPTIONS,\n  );\n  protected readonly layoutTypeOptions = toOptions(NAVIGATION_LAYOUT_TYPES, LAYOUT_TYPE_OPTIONS);\n  protected readonly navigationTypeOptions = computed(() =>\n    toOptions(\n      this.navigationState().orientation === 'vertical'\n        ? VERTICAL_NAVIGATION_TYPES\n        : HORIZONTAL_NAVIGATION_TYPES,\n      NAVIGATION_TYPE_OPTIONS,\n    ),\n  );\n  protected readonly navigationPositionOptions = computed(() =>\n    toOptions(\n      this.navigationState().orientation === 'vertical' ? ['left', 'right'] : ['top', 'bottom'],\n      NAVIGATION_POSITION_OPTIONS,\n    ),\n  );\n  protected readonly navigationModeOptions = computed<readonly AppPreferenceOption[]>(() =>\n    this.navigationState().orientation === 'horizontal'\n      ? []\n      : this.navigationState().type === 'sidebar'\n        ? [\n            { value: 'expanded', label: 'Diperluas', icon: 'unfold_more' },\n            { value: 'collapsed', label: 'Dipadatkan', icon: 'compress' },\n          ]\n        : toOptions(DOCKBAR_MODES, DOCKBAR_MODE_OPTIONS),\n  );\n  protected readonly navigationMode = computed(() => {\n    const state = this.navigationState();\n\n    if (state.orientation === 'horizontal') return 'default';\n\n    return state.type === 'sidebar'\n      ? state.collapsed\n        ? 'collapsed'\n        : 'expanded'\n      : state.dockbarMode;\n  });\n  protected readonly navigationModeLabel = computed(() => {\n    const state = this.navigationState();\n\n    if (state.orientation === 'horizontal') return 'Default';\n\n    return state.type === 'sidebar'\n      ? state.collapsed\n        ? 'Dipadatkan'\n        : 'Diperluas'\n      : DOCKBAR_MODE_OPTIONS[state.dockbarMode].label;\n  });\n  protected readonly navigationTypeLabel = computed(\n    () => NAVIGATION_TYPE_OPTIONS[this.navigationState().type].label,\n  );\n  protected readonly navigationPositionLabel = computed(\n    () => NAVIGATION_POSITION_OPTIONS[this.navigationState().position].label,\n  );\n\n  constructor() {\n    const host = this.host.nativeElement as HTMLElement;\n    afterNextRender(() => {\n      const closeButton = host.querySelector(\n        '[data-app-preferences-close]',\n      ) as HTMLButtonElement | null;\n      closeButton?.focus({ preventScroll: true });\n    });\n  }\n\n  protected selectThemeAppearance(value: string): void {\n    if (!isThemeAppearance(value)) return;\n\n    // An appearance may switch the shell between sidebar and dockbar. Close the\n    // currently projected panel first so the navigation tree and preferences\n    // surface do not transition at the same time.\n    this.preferences.close();\n    this.themeAppearanceService.setAppearance(value);\n  }\n\n  protected selectMode(value: string): void {\n    if (!this.isLocked('theme-mode') && isThemeMode(value)) this.themeMode.setMode(value);\n  }\n\n  protected selectColor(value: string): void {\n    if (!this.isLocked('theme-color') && isThemeColor(value)) this.themeColor.setColor(value);\n  }\n\n  protected selectBrand(value: string): void {\n    if (!this.isLocked('theme-brand') && isThemeBrand(value)) this.themeBrand.setBrand(value);\n  }\n\n  protected selectSpace(value: string): void {\n    if (!this.isLocked('theme-space') && isThemeSpace(value)) this.themeSpace.setSpace(value);\n  }\n\n  protected selectRadius(value: string): void {\n    if (!this.isLocked('theme-radius') && isThemeRadius(value)) this.themeRadius.setRadius(value);\n  }\n\n  protected selectSurface(value: string): void {\n    if (!this.isLocked('layout-surface') && isUiLayoutSurface(value)) {\n      this.layout.setSurface(value);\n    }\n  }\n\n  protected selectWidth(value: string): void {\n    if (!this.isLocked('layout-width') && isUiLayoutWidth(value)) this.layout.setWidth(value);\n  }\n\n  protected selectLayoutType(value: string): void {\n    if (\n      this.isLayoutTypeLocked() ||\n      !isUiLayoutType(value) ||\n      !(NAVIGATION_LAYOUT_TYPES as readonly string[]).includes(value)\n    ) {\n      return;\n    }\n\n    const orientation = value as NavigationOrientation;\n    const state = this.navigationState();\n    const type = isNavigationTypeForOrientation(state.type, orientation)\n      ? state.type\n      : orientation === 'vertical'\n        ? 'sidebar'\n        : 'navbar';\n    const position = isNavigationPositionForOrientation(state.position, orientation)\n      ? state.position\n      : orientation === 'vertical'\n        ? 'left'\n        : 'top';\n\n    this.layout.setType(value);\n    this.navigation.update(PRIMARY_NAVIGATION_ID, { orientation, type, position });\n  }\n\n  protected selectNavigationType(value: string): void {\n    const state = this.navigationState();\n\n    if (!this.isLocked('nav-type') && isNavigationTypeForOrientation(value, state.orientation)) {\n      this.navigation.update(PRIMARY_NAVIGATION_ID, { type: value });\n    }\n  }\n\n  protected selectNavigationMode(value: string): void {\n    const state = this.navigationState();\n\n    if (this.isLocked('nav-type-mode')) return;\n\n    if (state.type === 'sidebar' && (value === 'expanded' || value === 'collapsed')) {\n      this.navigation.update(PRIMARY_NAVIGATION_ID, { collapsed: value === 'collapsed' });\n    }\n\n    if (state.type === 'dockbar' && (DOCKBAR_MODES as readonly string[]).includes(value)) {\n      this.navigation.update(PRIMARY_NAVIGATION_ID, {\n        dockbarMode: value as NavigationDockbarMode,\n      });\n    }\n  }\n\n  protected selectNavigationPosition(value: string): void {\n    const state = this.navigationState();\n\n    if (\n      !this.isLocked('nav-position') &&\n      isNavigationPositionForOrientation(value, state.orientation)\n    ) {\n      this.navigation.update(PRIMARY_NAVIGATION_ID, { position: value });\n    }\n  }\n\n  protected resetToDefaults(): void {\n    const defaults = this.defaults;\n    if (!defaults) return;\n\n    let changed = false;\n    if (!this.isLocked('theme-mode') && this.mode() !== defaults.theme.mode) {\n      this.themeMode.setMode(defaults.theme.mode);\n      changed = true;\n    }\n    if (!this.isLocked('theme-color') && this.color() !== defaults.theme.color) {\n      this.themeColor.setColor(defaults.theme.color);\n      changed = true;\n    }\n    if (!this.isLocked('theme-brand') && this.brand() !== defaults.theme.brand) {\n      this.themeBrand.setBrand(defaults.theme.brand);\n      changed = true;\n    }\n    if (!this.isLocked('theme-space') && this.space() !== defaults.theme.space) {\n      this.themeSpace.setSpace(defaults.theme.space);\n      changed = true;\n    }\n    if (!this.isLocked('theme-radius') && this.radius() !== defaults.theme.radius) {\n      this.themeRadius.setRadius(defaults.theme.radius);\n      changed = true;\n    }\n    if (this.themeAppearance() !== defaults.theme.appearance) {\n      this.themeAppearanceService.setAppearance(defaults.theme.appearance);\n      changed = true;\n    }\n    if (!this.isLocked('layout-surface') && this.surface() !== defaults.layout.surface) {\n      this.layout.setSurface(defaults.layout.surface);\n      changed = true;\n    }\n    if (!this.isLocked('layout-width') && this.width() !== defaults.layout.width) {\n      this.layout.setWidth(defaults.layout.width);\n      changed = true;\n    }\n    if (!this.isLayoutTypeLocked() && this.layoutType() !== defaults.layout.type) {\n      this.selectLayoutType(defaults.layout.type);\n      changed = true;\n    }\n\n    const navigation = this.navigationState();\n    const nextNavigation = {\n      orientation: this.isLocked('nav-orientation')\n        ? navigation.orientation\n        : defaults.navigation.orientation,\n      type: this.isLocked('nav-type') ? navigation.type : defaults.navigation.type,\n      position: this.isLocked('nav-position') ? navigation.position : defaults.navigation.position,\n      collapsed: this.isLocked('nav-type-mode')\n        ? navigation.collapsed\n        : defaults.navigation.collapsed,\n      dockbarMode: this.isLocked('nav-type-mode')\n        ? navigation.dockbarMode\n        : defaults.navigation.dockbarMode,\n    };\n    if (\n      navigation.orientation !== nextNavigation.orientation ||\n      navigation.type !== nextNavigation.type ||\n      navigation.position !== nextNavigation.position ||\n      navigation.collapsed !== nextNavigation.collapsed ||\n      navigation.dockbarMode !== nextNavigation.dockbarMode\n    ) {\n      this.navigation.update(PRIMARY_NAVIGATION_ID, nextNavigation);\n      changed = true;\n    }\n\n    this.announce(\n      changed ? 'Preferensi dikembalikan ke default.' : 'Preferensi sudah menggunakan default.',\n    );\n  }\n\n  private announce(message: string): void {\n    this.announcement.set('');\n    queueMicrotask(() => this.announcement.set(message));\n  }\n\n  protected isLocked(key: ThemeAppearanceSettingKey): boolean {\n    return isThemeAppearanceSettingLocked(this.themeAppearance(), key);\n  }\n\n  protected isLayoutTypeLocked(): boolean {\n    return this.isLocked('layout-type') || this.isLocked('nav-orientation');\n  }\n}\n\nfunction isNavigationTypeForOrientation(\n  value: string,\n  orientation: NavigationOrientation,\n): value is NavigationType {\n  return orientation === 'vertical'\n    ? (VERTICAL_NAVIGATION_TYPES as readonly string[]).includes(value)\n    : (HORIZONTAL_NAVIGATION_TYPES as readonly string[]).includes(value);\n}\n\nfunction isNavigationPositionForOrientation(\n  value: string,\n  orientation: NavigationOrientation,\n): value is NavigationPosition {\n  return orientation === 'vertical'\n    ? value === 'left' || value === 'right'\n    : value === 'top' || value === 'bottom';\n}\n","<Page variant=\"stacked\" height=\"fix\" scroll=\"content\" class=\"bg-background\">\n  <PageHeader class=\"h-11 px-3 py-0\">\n    <div class=\"flex h-full items-center justify-between gap-3\">\n      <h2\n        id=\"app-preferences-title\"\n        class=\"min-w-0 truncate text-base font-semibold text-foreground\"\n      >\n        Preferensi aplikasi\n      </h2>\n      <button\n        type=\"button\"\n        Button\n        variant=\"ghost\"\n        size=\"icon\"\n        class=\"h-11 w-11 shrink-0\"\n        data-app-preferences-close\n        aria-label=\"Tutup preferensi aplikasi\"\n        (click)=\"closeRequested.emit()\"\n      >\n        <Icon name=\"close\" [size]=\"20\" />\n      </button>\n    </div>\n  </PageHeader>\n\n  <PageContent class=\"overscroll-contain bg-muted/20\">\n    <div class=\"space-y-5 p-3\">\n      <p class=\"text-xs leading-4 text-muted-foreground\">\n        Sesuaikan tampilan dan navigasi aplikasi.\n      </p>\n\n      <section aria-labelledby=\"app-preferences-theme\" class=\"space-y-2\">\n        <h2\n          id=\"app-preferences-theme\"\n          class=\"text-xs font-semibold tracking-wide text-muted-foreground\"\n        >\n          Tema\n        </h2>\n        <app-preference-setting-group\n          headingId=\"app-preferences-theme-appearance\"\n          title=\"Tampilan tema\"\n          [activeLabel]=\"\n            themeAppearanceOptions.find((option) => option.value === themeAppearance())?.label ??\n            themeAppearance()\n          \"\n          [options]=\"themeAppearanceOptions\"\n          [selected]=\"themeAppearance()\"\n          (optionSelected)=\"selectThemeAppearance($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-mode\"\n          title=\"Mode warna\"\n          description=\"Sistem mengikuti preferensi perangkat.\"\n          [activeLabel]=\"modeOptions.find((option) => option.value === mode())?.label ?? mode()\"\n          [options]=\"modeOptions\"\n          [selected]=\"mode()\"\n          [locked]=\"isLocked('theme-mode')\"\n          (optionSelected)=\"selectMode($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-color\"\n          title=\"Warna tema\"\n          [activeLabel]=\"colorOptions.find((option) => option.value === color())?.label ?? color()\"\n          [options]=\"colorOptions\"\n          [selected]=\"color()\"\n          [locked]=\"isLocked('theme-color')\"\n          (optionSelected)=\"selectColor($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-brand\"\n          title=\"Brand\"\n          [activeLabel]=\"brandOptions.find((option) => option.value === brand())?.label ?? brand()\"\n          [options]=\"brandOptions\"\n          [selected]=\"brand()\"\n          [locked]=\"isLocked('theme-brand')\"\n          (optionSelected)=\"selectBrand($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-space\"\n          title=\"Kerapatan\"\n          [activeLabel]=\"spaceOptions.find((option) => option.value === space())?.label ?? space()\"\n          [options]=\"spaceOptions\"\n          [selected]=\"space()\"\n          [locked]=\"isLocked('theme-space')\"\n          (optionSelected)=\"selectSpace($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-radius\"\n          title=\"Sudut\"\n          [activeLabel]=\"\n            radiusOptions.find((option) => option.value === radius())?.label ?? radius()\n          \"\n          [options]=\"radiusOptions\"\n          [selected]=\"radius()\"\n          [locked]=\"isLocked('theme-radius')\"\n          (optionSelected)=\"selectRadius($event)\"\n        />\n      </section>\n\n      <section aria-labelledby=\"app-preferences-layout\" class=\"space-y-2\">\n        <h2\n          id=\"app-preferences-layout\"\n          class=\"text-xs font-semibold tracking-wide text-muted-foreground\"\n        >\n          Layout\n        </h2>\n        <app-preference-setting-group\n          headingId=\"app-preferences-surface\"\n          title=\"Latar\"\n          [activeLabel]=\"\n            surfaceOptions.find((option) => option.value === surface())?.label ?? surface()\n          \"\n          [options]=\"surfaceOptions\"\n          [selected]=\"surface()\"\n          [locked]=\"isLocked('layout-surface')\"\n          (optionSelected)=\"selectSurface($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-layout-type\"\n          title=\"Tipe layout\"\n          [activeLabel]=\"\n            layoutTypeOptions.find((option) => option.value === layoutType())?.label ?? layoutType()\n          \"\n          [options]=\"layoutTypeOptions\"\n          [selected]=\"layoutType()\"\n          [locked]=\"isLayoutTypeLocked()\"\n          (optionSelected)=\"selectLayoutType($event)\"\n        />\n        <app-preference-setting-group\n          headingId=\"app-preferences-width\"\n          title=\"Lebar konten\"\n          [activeLabel]=\"widthOptions.find((option) => option.value === width())?.label ?? width()\"\n          [options]=\"widthOptions\"\n          [selected]=\"width()\"\n          [locked]=\"isLocked('layout-width')\"\n          (optionSelected)=\"selectWidth($event)\"\n        />\n      </section>\n\n      <section aria-labelledby=\"app-preferences-navigation\" class=\"space-y-2\">\n        <h2\n          id=\"app-preferences-navigation\"\n          class=\"text-xs font-semibold tracking-wide text-muted-foreground\"\n        >\n          Navigasi\n        </h2>\n        <app-preference-setting-group\n          headingId=\"app-preferences-navigation-type\"\n          title=\"Tipe navigation\"\n          [activeLabel]=\"navigationTypeLabel()\"\n          [options]=\"navigationTypeOptions()\"\n          [selected]=\"navigationState().type\"\n          [locked]=\"isLocked('nav-type')\"\n          (optionSelected)=\"selectNavigationType($event)\"\n        />\n        @if (navigationState().orientation === 'vertical') {\n          <app-preference-setting-group\n            headingId=\"app-preferences-navigation-mode\"\n            title=\"Mode navigation\"\n            [activeLabel]=\"navigationModeLabel()\"\n            [options]=\"navigationModeOptions()\"\n            [selected]=\"navigationMode()\"\n            [locked]=\"isLocked('nav-type-mode')\"\n            (optionSelected)=\"selectNavigationMode($event)\"\n          />\n        }\n        <app-preference-setting-group\n          headingId=\"app-preferences-navigation-position\"\n          title=\"Posisi navigation\"\n          [activeLabel]=\"navigationPositionLabel()\"\n          [options]=\"navigationPositionOptions()\"\n          [selected]=\"navigationState().position\"\n          [locked]=\"isLocked('nav-position')\"\n          (optionSelected)=\"selectNavigationPosition($event)\"\n        />\n      </section>\n    </div>\n  </PageContent>\n\n  @if (hasDefaults()) {\n    <PageFooter class=\"px-3 py-0\">\n      <button\n        type=\"button\"\n        Button\n        variant=\"ghost\"\n        class=\"h-full w-full justify-start\"\n        (click)=\"resetToDefaults()\"\n      >\n        <Icon name=\"restart_alt\" [size]=\"18\" />\n        Kembalikan default\n      </button>\n    </PageFooter>\n  }\n\n  <p class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">{{ announcement() }}</p>\n</Page>\n","import { DOCUMENT } from '@angular/common';\nimport { Component, DestroyRef, computed, effect, inject, signal } from '@angular/core';\nimport { cn } from '@edsis/component/class';\nimport { SheetComponent, type SheetSide } from '@edsis/component/sheet';\nimport { NavigationService, type NavigationState } from '@edsis/navigation/service';\nimport { LayoutService } from '@edsis/theme/layout';\n\nimport { AppPreferencesPanelService } from './app-preferences-panel.service';\nimport { AppPreferencesSurfaceComponent } from './app-preferences-surface.component';\n\nconst PRIMARY_NAVIGATION_ID = 'main';\nconst NARROW_VIEWPORT_QUERY = '(max-width: 767.98px)';\n\n@Component({\n  selector: 'app-preferences',\n  imports: [AppPreferencesSurfaceComponent, SheetComponent],\n  host: {\n    '[class]': 'hostClass()',\n    '[attr.role]': 'inline() ? \"region\" : null',\n    '[attr.aria-labelledby]': 'inline() ? \"app-preferences-title\" : null',\n  },\n  template: `\n    @if (inline()) {\n      <section\n        id=\"app-preferences-panel\"\n        class=\"h-full min-h-0 w-full\"\n        aria-labelledby=\"app-preferences-title\"\n      >\n        <app-preferences-surface (closeRequested)=\"preferences.close()\" />\n      </section>\n    } @else {\n      <Sheet\n        [open]=\"preferences.opened()\"\n          [side]=\"sheetSide()\"\n        [showCloseButton]=\"false\"\n        [restoreFocus]=\"false\"\n        aria-labelledby=\"app-preferences-title\"\n        [class]=\"sheetClass()\"\n        (openedChange)=\"onSheetOpenChange($event)\"\n      >\n        <app-preferences-surface\n          id=\"app-preferences-panel\"\n          (closeRequested)=\"preferences.close()\"\n        />\n      </Sheet>\n    }\n  `,\n})\nexport class AppPreferencesComponent {\n  private readonly document = inject(DOCUMENT, { optional: true });\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly layout = inject(LayoutService);\n  private readonly navigation = inject(NavigationService);\n  protected readonly preferences = inject(AppPreferencesPanelService);\n  private readonly narrowState = signal(this.mediaQuery()?.matches ?? false);\n  private readonly navigationState = computed<NavigationState>(\n    () =>\n      this.navigation.state(PRIMARY_NAVIGATION_ID)() ?? {\n        id: PRIMARY_NAVIGATION_ID,\n        orientation: 'vertical',\n        type: 'sidebar',\n        position: 'left',\n        collapsed: false,\n        dockbarMode: 'default',\n      },\n  );\n\n  protected readonly inline = computed(\n    () =>\n      this.layout.appearance() !== 'desktop' &&\n      !this.narrowState() &&\n      this.navigationState().type === 'sidebar' &&\n      !this.navigationState().collapsed,\n  );\n  protected readonly sheetSide = computed<SheetSide>(() =>\n    this.navigationState().orientation === 'vertical' ? 'left' : 'right',\n  );\n  protected readonly hostClass = computed(() =>\n    this.inline()\n      ? 'block h-full w-76 border-r border-border'\n      : 'relative block h-full w-16',\n  );\n  protected readonly sheetClass = computed(() =>\n    cn(\n      'w-[min(19rem,calc(100dvw-2rem))]! max-w-none! gap-0! p-0!',\n      this.sheetSide() === 'left' ? 'border-r-2 border-border' : 'border-l-2 border-border',\n    ),\n  );\n\n  constructor() {\n    const mediaQuery = this.mediaQuery();\n    const onChange = (event: MediaQueryListEvent) => this.narrowState.set(event.matches);\n\n    mediaQuery?.addEventListener('change', onChange);\n    effect((onCleanup) => {\n      if (!this.inline() || !this.preferences.opened()) {\n        return;\n      }\n\n      const onKeydown = (event: KeyboardEvent) => {\n        if (event.key === 'Escape' && !event.defaultPrevented) {\n          this.preferences.close();\n        }\n      };\n\n      this.document?.addEventListener('keydown', onKeydown);\n      onCleanup(() => this.document?.removeEventListener('keydown', onKeydown));\n    });\n    this.destroyRef.onDestroy(() => {\n      mediaQuery?.removeEventListener('change', onChange);\n      if (this.preferences.opened()) this.preferences.close();\n    });\n  }\n\n  protected onSheetOpenChange(open: boolean): void {\n    if (!open) this.preferences.close();\n  }\n\n  private mediaQuery(): MediaQueryList | null {\n    return this.document?.defaultView?.matchMedia?.(NARROW_VIEWPORT_QUERY) ?? null;\n  }\n}\n","import { Directive, ElementRef, computed, inject } from '@angular/core';\nimport { AppPreferencesPanelService } from './app-preferences-panel.service';\n\n@Directive({\n  selector: '[appPreferencesTrigger]',\n  host: {\n    '[attr.aria-expanded]': 'preferences.opened()',\n    '[attr.aria-controls]': 'preferences.opened() ? \"app-preferences-panel\" : null',\n    '[attr.aria-disabled]': 'isButton() && !preferences.supported() ? \"true\" : null',\n    '[attr.disabled]': 'isButton() && !preferences.supported() ? \"\" : null',\n    '(click)': 'onClick($event)',\n  },\n})\nexport class AppPreferencesTriggerDirective {\n  private readonly elementRef = inject(ElementRef<HTMLElement>);\n  protected readonly preferences = inject(AppPreferencesPanelService);\n  protected readonly isButton = computed(\n    () => this.elementRef.nativeElement.localName === 'button',\n  );\n\n  protected onClick(event: MouseEvent): void {\n    if (this.preferences.open(this.elementRef.nativeElement)) {\n      event.preventDefault();\n    }\n  }\n}\n","import {\n  inject,\n  makeEnvironmentProviders,\n  provideAppInitializer,\n  type EnvironmentProviders,\n} from '@angular/core';\nimport { RuntimeContextService, type EdsisDeviceType } from '@edsis/angular/services/runtime';\nimport {\n  ThemeAppearanceService,\n  ThemeDeviceService,\n  type ThemeAppearance,\n} from '@edsis/theme/styles';\n\nexport interface RuntimeThemeDeviceOptions {\n  /** Default true. Disable when a named application profile owns appearance. */\n  readonly appearanceFallback?: boolean;\n}\n\n/** Registers immutable runtime fallbacks without replacing stored theme preferences. */\nexport function provideRuntimeThemeDevice(\n  options: RuntimeThemeDeviceOptions = {},\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideAppInitializer(() => {\n      const runtime = inject(RuntimeContextService);\n      const themeDevice = inject(ThemeDeviceService);\n      const themeAppearance = inject(ThemeAppearanceService);\n\n      return runtime.initialize().then(() => {\n        const deviceType = runtime.deviceType();\n\n        themeDevice.registerType(deviceType);\n        if (options.appearanceFallback !== false) {\n          themeAppearance.registerAppearance(appearanceForDeviceType(deviceType));\n        }\n      });\n    }),\n  ]);\n}\n\nfunction appearanceForDeviceType(deviceType: EdsisDeviceType): ThemeAppearance {\n  switch (deviceType) {\n    case 'windows':\n    case 'macos':\n      return 'desktop';\n    case 'android':\n    case 'ipados':\n      return 'tablet';\n    case 'browser':\n      return 'browser';\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PRIMARY_NAVIGATION_ID","LayoutService"],"mappings":"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"}