@edsis/ui 21.3.7 → 21.3.9

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.
Files changed (40) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/edsis-ui-avatar.mjs +1 -1
  3. package/fesm2022/edsis-ui-avatar.mjs.map +1 -1
  4. package/fesm2022/edsis-ui-card.mjs +1 -1
  5. package/fesm2022/edsis-ui-card.mjs.map +1 -1
  6. package/fesm2022/edsis-ui-chart.mjs +12 -12
  7. package/fesm2022/edsis-ui-chart.mjs.map +1 -1
  8. package/fesm2022/edsis-ui-composer.mjs +2 -2
  9. package/fesm2022/edsis-ui-composer.mjs.map +1 -1
  10. package/fesm2022/edsis-ui-editor.mjs +9 -2
  11. package/fesm2022/edsis-ui-editor.mjs.map +1 -1
  12. package/fesm2022/edsis-ui-icon.mjs +78 -0
  13. package/fesm2022/edsis-ui-icon.mjs.map +1 -0
  14. package/fesm2022/edsis-ui-input-group.mjs +2 -2
  15. package/fesm2022/edsis-ui-input-group.mjs.map +1 -1
  16. package/fesm2022/edsis-ui-kbd.mjs +1 -1
  17. package/fesm2022/edsis-ui-kbd.mjs.map +1 -1
  18. package/fesm2022/edsis-ui-layout.mjs +4 -4
  19. package/fesm2022/edsis-ui-layout.mjs.map +1 -1
  20. package/fesm2022/edsis-ui-nav.mjs +30 -37
  21. package/fesm2022/edsis-ui-nav.mjs.map +1 -1
  22. package/fesm2022/edsis-ui-page.mjs +67 -15
  23. package/fesm2022/edsis-ui-page.mjs.map +1 -1
  24. package/fesm2022/edsis-ui-pillbox.mjs +1 -1
  25. package/fesm2022/edsis-ui-pillbox.mjs.map +1 -1
  26. package/fesm2022/edsis-ui-scroll-area.mjs +2 -2
  27. package/fesm2022/edsis-ui-scroll-area.mjs.map +1 -1
  28. package/fesm2022/edsis-ui-theme.mjs +11 -3
  29. package/fesm2022/edsis-ui-theme.mjs.map +1 -1
  30. package/fesm2022/edsis-ui-timeline.mjs +17 -17
  31. package/fesm2022/edsis-ui-timeline.mjs.map +1 -1
  32. package/icon/README.md +25 -0
  33. package/nav/README.md +9 -3
  34. package/package.json +5 -1
  35. package/page/README.md +198 -5
  36. package/theme/README.md +30 -0
  37. package/types/edsis-ui-editor.d.ts +1 -0
  38. package/types/edsis-ui-icon.d.ts +31 -0
  39. package/types/edsis-ui-page.d.ts +34 -3
  40. package/types/edsis-ui-theme.d.ts +10 -2
@@ -1 +1 @@
1
- {"version":3,"file":"edsis-ui-kbd.mjs","sources":["../../../library/ui/kbd/kbd.component.ts","../../../library/ui/kbd/edsis-ui-kbd.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-kbd, [ui-kbd]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kbd\"',\n },\n template: `<ng-content />`,\n})\nexport class KbdComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n [\n 'inline-flex min-h-6 min-w-6 select-none items-center justify-center gap-1 whitespace-nowrap rounded-md',\n 'border border-border bg-background px-1.5 font-mono text-[11px] font-medium leading-none text-foreground shadow-sm',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-3',\n ].join(' '),\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'ui-kbd-group, [ui-kbd-group]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kbd-group\"',\n },\n template: `<ng-content />`,\n})\nexport class KbdGroupComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('inline-flex flex-wrap items-center gap-1.5', this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,YAAY,CAAA;AACd,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA;QACE,wGAAwG;QACxG,oHAAoH;QACpH,iFAAiF;KAClF,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,CAAC,KAAK,EAAE,CACb,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;wGAZU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,6RAFb,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEf,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,OAAO;AAC5B,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAyBY,iBAAiB,CAAA;AACnB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,4CAA4C,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,8EAAC;wGAHhG,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,+SAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,aAAa;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACnCD;;AAEG;;;;"}
1
+ {"version":3,"file":"edsis-ui-kbd.mjs","sources":["../../../library/ui/kbd/kbd.component.ts","../../../library/ui/kbd/edsis-ui-kbd.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-kbd, [ui-kbd]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kbd\"',\n },\n template: `<ng-content />`,\n})\nexport class KbdComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n [\n 'inline-flex min-h-6 min-w-6 select-none items-center justify-center gap-1 whitespace-nowrap rounded-md',\n 'border border-border bg-background px-1.5 font-mono text-2xs-plus font-medium leading-none text-foreground shadow-sm',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-3',\n ].join(' '),\n this.class(),\n ),\n );\n}\n\n@Component({\n selector: 'ui-kbd-group, [ui-kbd-group]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"kbd-group\"',\n },\n template: `<ng-content />`,\n})\nexport class KbdGroupComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('inline-flex flex-wrap items-center gap-1.5', this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,YAAY,CAAA;AACd,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA;QACE,wGAAwG;QACxG,sHAAsH;QACtH,iFAAiF;KAClF,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,CAAC,KAAK,EAAE,CACb,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;wGAZU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,6RAFb,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEf,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,OAAO;AAC5B,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAyBY,iBAAiB,CAAA;AACnB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,4CAA4C,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,8EAAC;wGAHhG,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,+SAFlB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,kBAAkB,EAAE,aAAa;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACnCD;;AAEG;;;;"}
@@ -255,13 +255,13 @@ class UiLayoutComponent {
255
255
  surfaceClasses() {
256
256
  switch (this.resolvedSurface()) {
257
257
  case 'grid':
258
- return '[--ui-layout-grid-size:2rem] bg-background bg-[linear-gradient(rgba(148,163,184,0.18)_1px,transparent_1px),linear-gradient(to_right,rgba(148,163,184,0.18)_1px,transparent_1px)] bg-position-[center_center] bg-size-[var(--ui-layout-grid-size)_var(--ui-layout-grid-size)]';
258
+ return '[--ui-layout-grid-size:2rem] bg-background bg-[linear-gradient(hsl(var(--layout-grid-line)/var(--layout-grid-line-opacity))_1px,transparent_1px),linear-gradient(to_right,hsl(var(--layout-grid-line)/var(--layout-grid-line-opacity))_1px,transparent_1px)] bg-position-[center_center] bg-size-[var(--ui-layout-grid-size)_var(--ui-layout-grid-size)]';
259
259
  case 'honeycome':
260
- return 'bg-background bg-[radial-gradient(circle_at_0_0,rgba(148,163,184,0.22)_1px,transparent_1.5px)] bg-position-[center_center] bg-size-[1.25rem_1.25rem]';
260
+ return 'bg-background bg-[radial-gradient(circle_at_0_0,hsl(var(--layout-grid-line)/var(--layout-grid-dot-opacity))_1px,transparent_1.5px)] bg-position-[center_center] bg-size-[1.25rem_1.25rem]';
261
261
  case 'line-vertical':
262
- return 'bg-background bg-[linear-gradient(to_right,rgba(148,163,184,0.22)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';
262
+ return 'bg-background bg-[linear-gradient(to_right,hsl(var(--layout-grid-line)/var(--layout-grid-dot-opacity))_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';
263
263
  case 'line-horizontal':
264
- return 'bg-background bg-[linear-gradient(rgba(148,163,184,0.22)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';
264
+ return 'bg-background bg-[linear-gradient(hsl(var(--layout-grid-line)/var(--layout-grid-dot-opacity))_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';
265
265
  default:
266
266
  return 'bg-background';
267
267
  }
@@ -1 +1 @@
1
- {"version":3,"file":"edsis-ui-layout.mjs","sources":["../../../library/ui/layout/types/layout.types.ts","../../../library/ui/layout/services/layout.service.ts","../../../library/ui/layout/ui-layout.component.ts","../../../library/ui/layout/vertical/ui-layout-vertical.component.ts","../../../library/ui/layout/horizontal/ui-layout-horizontal.component.ts","../../../library/ui/layout/empty/ui-layout-empty.component.ts","../../../library/ui/layout/fluid/ui-layout-fluid.component.ts","../../../library/ui/layout/nav/ui-layout-nav.component.ts","../../../library/ui/layout/content/ui-layout-content.component.ts","../../../library/ui/layout/edsis-ui-layout.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\n\nexport const UI_LAYOUT_TYPES = ['vertical', 'horizontal', 'empty', 'fluid'] as const;\nexport const UI_LAYOUT_SURFACES = ['flat', 'grid', 'honeycome', 'line-vertical', 'line-horizontal'] as const;\nexport const UI_LAYOUT_STYLES = ['flat', 'border-rail'] as const;\nexport const UI_LAYOUT_WIDTHS = ['full', 'wide', 'container', 'fluid'] as const;\n\nexport type UiLayoutType = (typeof UI_LAYOUT_TYPES)[number];\nexport type UiLayoutSurface = (typeof UI_LAYOUT_SURFACES)[number];\nexport type UiLayoutStyle = (typeof UI_LAYOUT_STYLES)[number];\nexport type UiLayoutWidth = (typeof UI_LAYOUT_WIDTHS)[number];\n\nexport const UI_LAYOUT_DEFAULT_SURFACE: UiLayoutSurface = 'flat';\nexport const UI_LAYOUT_DEFAULT_TYPE: UiLayoutType = 'vertical';\nexport const UI_LAYOUT_DEFAULT_STYLE: UiLayoutStyle = 'flat';\nexport const UI_LAYOUT_DEFAULT_WIDTH: UiLayoutWidth = 'full';\n\nexport const UI_LAYOUT_SURFACE_STORAGE_KEY = 'layout-surface';\nexport const UI_LAYOUT_APPEARANCE_STORAGE_KEY = 'layout-appearance';\nexport const UI_LAYOUT_TYPE_STORAGE_KEY = 'layout-type';\nexport const UI_LAYOUT_STYLE_STORAGE_KEY = 'layout-style';\nexport const UI_LAYOUT_WIDTH_STORAGE_KEY = 'layout-width';\n\nexport interface UiLayoutContextValue {\n surface: Signal<UiLayoutSurface>;\n type: Signal<UiLayoutType>;\n appearance: Signal<UiLayoutStyle>;\n style: Signal<UiLayoutStyle>;\n width: Signal<UiLayoutWidth>;\n}\n\nexport function isUiLayoutSurface(value: string | null): value is UiLayoutSurface {\n return value !== null && (UI_LAYOUT_SURFACES as readonly string[]).includes(value);\n}\n\nexport function isUiLayoutType(value: string | null): value is UiLayoutType {\n return value !== null && (UI_LAYOUT_TYPES as readonly string[]).includes(value);\n}\n\nexport function isUiLayoutStyle(value: string | null): value is UiLayoutStyle {\n return value !== null && (UI_LAYOUT_STYLES as readonly string[]).includes(value);\n}\n\nexport function isUiLayoutWidth(value: string | null): value is UiLayoutWidth {\n return value !== null && (UI_LAYOUT_WIDTHS as readonly string[]).includes(value);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport {\n UI_LAYOUT_APPEARANCE_STORAGE_KEY,\n isUiLayoutSurface,\n isUiLayoutStyle,\n isUiLayoutType,\n isUiLayoutWidth,\n UI_LAYOUT_DEFAULT_SURFACE,\n UI_LAYOUT_DEFAULT_STYLE,\n UI_LAYOUT_DEFAULT_TYPE,\n UI_LAYOUT_DEFAULT_WIDTH,\n UI_LAYOUT_SURFACE_STORAGE_KEY,\n UI_LAYOUT_STYLE_STORAGE_KEY,\n UI_LAYOUT_TYPE_STORAGE_KEY,\n UI_LAYOUT_WIDTH_STORAGE_KEY,\n type UiLayoutSurface,\n type UiLayoutStyle,\n type UiLayoutType,\n type UiLayoutWidth,\n} from '../types/layout.types';\n\ninterface LayoutMutationOptions {\n persist?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutService {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly surfaceState = signal<UiLayoutSurface>(this.getStoredSurface());\n private readonly typeState = signal<UiLayoutType>(this.getStoredType());\n private readonly styleState = signal<UiLayoutStyle>(this.getStoredStyle());\n private readonly widthState = signal<UiLayoutWidth>(this.getStoredWidth());\n\n readonly surface = this.surfaceState.asReadonly();\n readonly type = this.typeState.asReadonly();\n readonly appearance = this.styleState.asReadonly();\n readonly style = this.styleState.asReadonly();\n readonly width = this.widthState.asReadonly();\n\n registerDefaults(defaults: {\n surface?: UiLayoutSurface;\n appearance?: UiLayoutStyle;\n type?: UiLayoutType;\n width?: UiLayoutWidth;\n }): this {\n if (defaults.surface !== undefined) {\n this.registerSurface(defaults.surface);\n }\n\n if (defaults.appearance !== undefined) {\n this.registerAppearance(defaults.appearance);\n }\n\n if (defaults.type !== undefined) {\n this.registerType(defaults.type);\n }\n\n if (defaults.width !== undefined) {\n this.registerWidth(defaults.width);\n }\n\n return this;\n }\n\n registerSurface(surface: UiLayoutSurface): void {\n const storedSurface = this.readStorage(UI_LAYOUT_SURFACE_STORAGE_KEY);\n\n if (isUiLayoutSurface(storedSurface)) {\n this.surfaceState.set(storedSurface);\n return;\n }\n\n this.setSurface(surface);\n }\n\n registerType(type: UiLayoutType): void {\n const storedType = this.readStorage(UI_LAYOUT_TYPE_STORAGE_KEY);\n\n if (isUiLayoutType(storedType)) {\n this.typeState.set(storedType);\n return;\n }\n\n this.setType(type);\n }\n\n registerAppearance(appearance: UiLayoutStyle): void {\n this.setAppearance(this.getStoredAppearanceOrDefault(appearance));\n }\n\n registerStyle(style: UiLayoutStyle): void {\n this.registerAppearance(style);\n }\n\n registerWidth(width: UiLayoutWidth): void {\n const storedWidth = this.readStorage(UI_LAYOUT_WIDTH_STORAGE_KEY);\n\n if (isUiLayoutWidth(storedWidth)) {\n this.widthState.set(storedWidth);\n return;\n }\n\n this.setWidth(width);\n }\n\n setSurface(surface: UiLayoutSurface, options: LayoutMutationOptions = {}): void {\n this.surfaceState.set(surface);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_SURFACE_STORAGE_KEY, surface);\n }\n\n setType(type: UiLayoutType, options: LayoutMutationOptions = {}): void {\n this.typeState.set(type);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_TYPE_STORAGE_KEY, type);\n }\n\n setAppearance(appearance: UiLayoutStyle, options: LayoutMutationOptions = {}): void {\n this.styleState.set(appearance);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_APPEARANCE_STORAGE_KEY, appearance);\n this.removeStorage(UI_LAYOUT_STYLE_STORAGE_KEY);\n }\n\n setStyle(style: UiLayoutStyle, options: LayoutMutationOptions = {}): void {\n this.setAppearance(style, options);\n }\n\n setWidth(width: UiLayoutWidth, options: LayoutMutationOptions = {}): void {\n this.widthState.set(width);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_WIDTH_STORAGE_KEY, width);\n }\n\n getStoredSurface(): UiLayoutSurface {\n const value = this.readStorage(UI_LAYOUT_SURFACE_STORAGE_KEY);\n return isUiLayoutSurface(value) ? value : UI_LAYOUT_DEFAULT_SURFACE;\n }\n\n getStoredType(): UiLayoutType {\n const value = this.readStorage(UI_LAYOUT_TYPE_STORAGE_KEY);\n return isUiLayoutType(value) ? value : UI_LAYOUT_DEFAULT_TYPE;\n }\n\n getStoredAppearance(): UiLayoutStyle {\n const value = this.readStoredAppearance();\n return value ?? UI_LAYOUT_DEFAULT_STYLE;\n }\n\n getStoredStyle(): UiLayoutStyle {\n return this.getStoredAppearance();\n }\n\n getStoredWidth(): UiLayoutWidth {\n const value = this.readStorage(UI_LAYOUT_WIDTH_STORAGE_KEY);\n return isUiLayoutWidth(value) ? value : UI_LAYOUT_DEFAULT_WIDTH;\n }\n\n private readStorage(key: string): string | null {\n const storage = this.getStorage();\n if (!storage) {\n return null;\n }\n\n try {\n return storage.getItem(key);\n } catch {\n return null;\n }\n }\n\n private removeStorage(key: string): void {\n const storage = this.getStorage();\n if (!storage) {\n return;\n }\n\n try {\n storage.removeItem(key);\n } catch {\n return;\n }\n }\n\n private writeStorage(key: string, value: string): void {\n const storage = this.getStorage();\n if (!storage) {\n return;\n }\n\n try {\n storage.setItem(key, value);\n } catch {\n return;\n }\n }\n\n private getStorage(): Storage | null {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n\n try {\n return localStorage;\n } catch {\n return null;\n }\n }\n\n private readStoredAppearance(): UiLayoutStyle | null {\n const appearance = this.readStorage(UI_LAYOUT_APPEARANCE_STORAGE_KEY);\n if (isUiLayoutStyle(appearance)) {\n return appearance;\n }\n\n const legacyStyle = this.readStorage(UI_LAYOUT_STYLE_STORAGE_KEY);\n return isUiLayoutStyle(legacyStyle) ? legacyStyle : null;\n }\n\n private getStoredAppearanceOrDefault(fallback: UiLayoutStyle): UiLayoutStyle {\n return this.readStoredAppearance() ?? fallback;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from './services/layout.service';\nimport {\n UI_LAYOUT_DEFAULT_STYLE,\n UI_LAYOUT_DEFAULT_SURFACE,\n UI_LAYOUT_DEFAULT_WIDTH,\n type UiLayoutStyle,\n type UiLayoutSurface,\n type UiLayoutWidth,\n} from './types/layout.types';\n\n@Component({\n selector: 'ui-layout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-surface]': 'resolvedSurface()',\n '[attr.data-layout-appearance]': 'resolvedAppearance()',\n '[attr.data-layout-style]': 'resolvedStyle()',\n '[attr.data-layout-width]': 'resolvedWidth()',\n '[attr.data-layout-type]': 'layout.type()',\n },\n template: `\n <div data-layout-stage [class]=\"frameStageClasses()\">\n @if (isBorderRail()) {\n <div\n aria-hidden=\"true\"\n data-layout-rail\n class=\"pointer-events-none col-start-1 row-start-1 z-0 overflow-visible\">\n <div data-layout-rail-anchor [class]=\"railAnchorClasses()\">\n <div\n data-layout-rail-top-left-horizontal\n class=\"absolute top-0 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-top-left-vertical\n class=\"absolute bottom-full left-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-rail-top-right-horizontal\n class=\"absolute top-0 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-top-right-vertical\n class=\"absolute bottom-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-rail-bottom-left-horizontal\n class=\"absolute bottom-0 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-bottom-left-vertical\n class=\"absolute top-full left-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-rail-bottom-right-horizontal\n class=\"absolute bottom-0 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-bottom-right-vertical\n class=\"absolute top-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n\n @if (showsHorizontalInsetRails()) {\n <div data-layout-horizontal-top-rail class=\"absolute inset-x-0 top-12 h-0.5 bg-border\"></div>\n <div\n data-layout-horizontal-top-left-extension\n class=\"absolute top-12 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-horizontal-top-right-extension\n class=\"absolute top-12 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div data-layout-horizontal-bottom-rail class=\"absolute inset-x-0 bottom-12 h-0.5 bg-border\"></div>\n <div\n data-layout-horizontal-bottom-left-extension\n class=\"absolute bottom-12 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-horizontal-bottom-right-extension\n class=\"absolute bottom-12 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n }\n </div>\n </div>\n }\n\n <div data-layout-frame [class]=\"frameLayerClasses()\">\n <div [class]=\"contentShellClasses()\">\n <ng-content />\n </div>\n </div>\n </div>\n `,\n})\nexport class UiLayoutComponent {\n protected readonly layout = inject(LayoutService);\n\n readonly surface = input<UiLayoutSurface | null>(null);\n readonly appearance = input<UiLayoutStyle | null>(null);\n readonly layoutStyleAttribute = input<UiLayoutStyle | null>(null, { alias: 'layout-style' });\n readonly width = input<UiLayoutWidth | null>(null);\n readonly class = input<string>('');\n\n protected readonly appearanceInput = computed(() => this.appearance() ?? this.layoutStyleAttribute());\n protected readonly resolvedSurface = computed(() => this.surface() ?? this.layout.surface());\n protected readonly resolvedAppearance = computed(() => this.appearanceInput() ?? this.layout.appearance());\n protected readonly resolvedStyle = computed(() => this.layout.style());\n protected readonly resolvedWidth = computed(() => this.width() ?? this.layout.width());\n protected readonly isBorderRail = computed(() => this.resolvedAppearance() === 'border-rail');\n protected readonly isFluidFrame = computed(() => this.resolvedWidth() === 'fluid' && this.layout.type() === 'fluid');\n protected readonly showsHorizontalInsetRails = computed(() => {\n const layoutType = this.layout.type();\n return this.isBorderRail() && (layoutType === 'horizontal' || layoutType === 'vertical');\n });\n protected readonly frameStageClasses = computed(() =>\n cn('relative grid min-h-0 min-w-0 grid-cols-1 grid-rows-1', this.frameSizeClasses()),\n );\n protected readonly railAnchorClasses = computed(() => 'relative h-full min-h-0 w-full min-w-0');\n protected readonly contentShellClasses = computed(() =>\n cn(\n 'relative z-10 min-h-0 min-w-0',\n this.isFluidFrame() ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full',\n this.isBorderRail() ? 'overflow-visible' : 'overflow-hidden',\n ),\n );\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'relative isolate h-dvh w-full min-w-0 box-border overflow-hidden text-foreground',\n this.isFluidFrame() ? 'grid place-items-center' : 'block',\n this.surfaceClasses(),\n this.widthPaddingClasses(),\n this.class(),\n ),\n );\n\n protected readonly frameClasses = computed(() =>\n cn(\n 'relative min-h-0 min-w-0 border-border bg-background/55 backdrop-blur-xs',\n this.frameSizeClasses(),\n this.isBorderRail() ? 'overflow-visible border-2' : 'overflow-hidden border',\n ),\n );\n protected readonly frameLayerClasses = computed(() => cn('col-start-1 row-start-1', this.frameClasses()));\n\n constructor() {\n effect(() => {\n const surface = this.surface();\n if (surface !== null) {\n this.layout.setSurface(surface, { persist: false });\n } else {\n this.layout.registerSurface(UI_LAYOUT_DEFAULT_SURFACE);\n }\n\n const appearance = this.appearanceInput();\n if (appearance !== null) {\n this.layout.setAppearance(appearance, { persist: false });\n } else {\n this.layout.registerAppearance(UI_LAYOUT_DEFAULT_STYLE);\n }\n\n const width = this.width();\n if (width !== null) {\n this.layout.setWidth(width, { persist: false });\n } else {\n this.layout.registerWidth(UI_LAYOUT_DEFAULT_WIDTH);\n }\n });\n }\n\n private surfaceClasses(): string {\n switch (this.resolvedSurface()) {\n case 'grid':\n return '[--ui-layout-grid-size:2rem] bg-background bg-[linear-gradient(rgba(148,163,184,0.18)_1px,transparent_1px),linear-gradient(to_right,rgba(148,163,184,0.18)_1px,transparent_1px)] bg-position-[center_center] bg-size-[var(--ui-layout-grid-size)_var(--ui-layout-grid-size)]';\n case 'honeycome':\n return 'bg-background bg-[radial-gradient(circle_at_0_0,rgba(148,163,184,0.22)_1px,transparent_1.5px)] bg-position-[center_center] bg-size-[1.25rem_1.25rem]';\n case 'line-vertical':\n return 'bg-background bg-[linear-gradient(to_right,rgba(148,163,184,0.22)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';\n case 'line-horizontal':\n return 'bg-background bg-[linear-gradient(rgba(148,163,184,0.22)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';\n default:\n return 'bg-background';\n }\n }\n\n private widthPaddingClasses(): string {\n switch (this.resolvedWidth()) {\n case 'wide':\n return 'p-4 lg:p-12';\n case 'container':\n return 'p-4 lg:px-0 lg:py-16';\n case 'fluid':\n return 'p-4 sm:p-6 lg:p-8';\n default:\n return 'p-4';\n }\n }\n\n private frameSizeClasses(): string {\n if (this.isFluidFrame()) {\n return 'h-auto w-auto max-h-full max-w-full';\n }\n\n return this.resolvedWidth() === 'container' ? 'h-full w-full lg:container lg:mx-auto' : 'h-full w-full';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-vertical',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'vertical',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutVerticalComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'grid h-full min-h-0 w-full min-w-0 grid-cols-[auto_minmax(0,1fr)]',\n this.layout.style() === 'border-rail' ? 'overflow-visible' : 'overflow-hidden',\n this.class(),\n ),\n );\n\n constructor() {\n this.layout.setType('vertical', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-horizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'horizontal',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutHorizontalComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden', this.class()),\n );\n\n constructor() {\n this.layout.setType('horizontal', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'empty',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutEmptyComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('h-full min-h-0 w-full min-w-0 overflow-hidden', this.class()));\n\n constructor() {\n this.layout.setType('empty', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-fluid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'fluid',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutFluidComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'grid min-h-0 min-w-0 place-items-center overflow-auto',\n this.layout.width() === 'fluid' ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full',\n this.class(),\n ),\n );\n\n constructor() {\n this.layout.setType('fluid', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChild, inject, input } from '@angular/core';\nimport { UiNavComponent } from '@edsis/ui/nav';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-nav',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.data-layout-type]': 'layout.type()',\n '[attr.data-layout-appearance]': 'layout.appearance()',\n '[attr.data-layout-style]': 'layout.style()',\n '[attr.data-layout-nav-rail-offset]': 'resolvedRailOffset()',\n },\n template: `\n @if (showsVerticalRail()) {\n <div\n aria-hidden=\"true\"\n data-layout-nav-rail\n class=\"pointer-events-none absolute inset-y-0 right-0 z-20 w-0.5 transition-transform duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none\"\n [style.transform]=\"railTransform()\">\n <div data-layout-nav-rail-line class=\"absolute inset-y-0 right-0 w-0.5 bg-border\"></div>\n <div\n data-layout-nav-rail-top\n class=\"absolute bottom-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-nav-rail-bottom\n class=\"absolute top-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n </div>\n }\n\n <ng-content />\n `,\n})\nexport class UiLayoutNavComponent {\n protected readonly layout = inject(LayoutService);\n protected readonly projectedNav = contentChild(UiNavComponent);\n\n readonly ariaLabel = input<string>('Layout navigation');\n readonly railOffset = input<string | null>(null);\n readonly class = input<string>('');\n protected readonly showsVerticalRail = computed(\n () => this.layout.type() === 'vertical' && this.layout.appearance() === 'border-rail',\n );\n protected readonly resolvedRailOffset = computed(\n () => this.railOffset() ?? this.projectedNav()?.previewRailOffset() ?? '0px',\n );\n protected readonly railTransform = computed(() => `translateX(${this.resolvedRailOffset()})`);\n\n protected readonly classes = computed(() => {\n const layoutType = this.layout.type();\n const showsVerticalRail = this.showsVerticalRail();\n\n return cn(\n 'relative block min-h-0 min-w-0',\n layoutType === 'horizontal' && 'h-12 min-h-12 w-full shrink-0 overflow-visible',\n layoutType === 'vertical' &&\n (showsVerticalRail\n ? 'h-full w-max max-w-full shrink-0 overflow-visible'\n : 'h-full w-max max-w-full shrink-0 overflow-hidden'),\n layoutType === 'empty' && 'hidden',\n this.class(),\n );\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-layout-type]': 'layout.type()',\n '[attr.data-layout-width]': 'layout.width()',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutContentComponent {\n protected readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => {\n const layoutType = this.layout.type();\n\n return cn(\n 'block min-h-0 min-w-0 overflow-auto',\n layoutType === 'horizontal' && 'flex-1',\n layoutType === 'vertical' && 'h-full',\n layoutType === 'empty' && 'h-full w-full',\n this.layout.width() === 'container' && 'w-full lg:container lg:mx-auto',\n this.class(),\n );\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edsis-ui-layout.mjs","sources":["../../../library/ui/layout/types/layout.types.ts","../../../library/ui/layout/services/layout.service.ts","../../../library/ui/layout/ui-layout.component.ts","../../../library/ui/layout/vertical/ui-layout-vertical.component.ts","../../../library/ui/layout/horizontal/ui-layout-horizontal.component.ts","../../../library/ui/layout/empty/ui-layout-empty.component.ts","../../../library/ui/layout/fluid/ui-layout-fluid.component.ts","../../../library/ui/layout/nav/ui-layout-nav.component.ts","../../../library/ui/layout/content/ui-layout-content.component.ts","../../../library/ui/layout/edsis-ui-layout.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\n\nexport const UI_LAYOUT_TYPES = ['vertical', 'horizontal', 'empty', 'fluid'] as const;\nexport const UI_LAYOUT_SURFACES = ['flat', 'grid', 'honeycome', 'line-vertical', 'line-horizontal'] as const;\nexport const UI_LAYOUT_STYLES = ['flat', 'border-rail'] as const;\nexport const UI_LAYOUT_WIDTHS = ['full', 'wide', 'container', 'fluid'] as const;\n\nexport type UiLayoutType = (typeof UI_LAYOUT_TYPES)[number];\nexport type UiLayoutSurface = (typeof UI_LAYOUT_SURFACES)[number];\nexport type UiLayoutStyle = (typeof UI_LAYOUT_STYLES)[number];\nexport type UiLayoutWidth = (typeof UI_LAYOUT_WIDTHS)[number];\n\nexport const UI_LAYOUT_DEFAULT_SURFACE: UiLayoutSurface = 'flat';\nexport const UI_LAYOUT_DEFAULT_TYPE: UiLayoutType = 'vertical';\nexport const UI_LAYOUT_DEFAULT_STYLE: UiLayoutStyle = 'flat';\nexport const UI_LAYOUT_DEFAULT_WIDTH: UiLayoutWidth = 'full';\n\nexport const UI_LAYOUT_SURFACE_STORAGE_KEY = 'layout-surface';\nexport const UI_LAYOUT_APPEARANCE_STORAGE_KEY = 'layout-appearance';\nexport const UI_LAYOUT_TYPE_STORAGE_KEY = 'layout-type';\nexport const UI_LAYOUT_STYLE_STORAGE_KEY = 'layout-style';\nexport const UI_LAYOUT_WIDTH_STORAGE_KEY = 'layout-width';\n\nexport interface UiLayoutContextValue {\n surface: Signal<UiLayoutSurface>;\n type: Signal<UiLayoutType>;\n appearance: Signal<UiLayoutStyle>;\n style: Signal<UiLayoutStyle>;\n width: Signal<UiLayoutWidth>;\n}\n\nexport function isUiLayoutSurface(value: string | null): value is UiLayoutSurface {\n return value !== null && (UI_LAYOUT_SURFACES as readonly string[]).includes(value);\n}\n\nexport function isUiLayoutType(value: string | null): value is UiLayoutType {\n return value !== null && (UI_LAYOUT_TYPES as readonly string[]).includes(value);\n}\n\nexport function isUiLayoutStyle(value: string | null): value is UiLayoutStyle {\n return value !== null && (UI_LAYOUT_STYLES as readonly string[]).includes(value);\n}\n\nexport function isUiLayoutWidth(value: string | null): value is UiLayoutWidth {\n return value !== null && (UI_LAYOUT_WIDTHS as readonly string[]).includes(value);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport {\n UI_LAYOUT_APPEARANCE_STORAGE_KEY,\n isUiLayoutSurface,\n isUiLayoutStyle,\n isUiLayoutType,\n isUiLayoutWidth,\n UI_LAYOUT_DEFAULT_SURFACE,\n UI_LAYOUT_DEFAULT_STYLE,\n UI_LAYOUT_DEFAULT_TYPE,\n UI_LAYOUT_DEFAULT_WIDTH,\n UI_LAYOUT_SURFACE_STORAGE_KEY,\n UI_LAYOUT_STYLE_STORAGE_KEY,\n UI_LAYOUT_TYPE_STORAGE_KEY,\n UI_LAYOUT_WIDTH_STORAGE_KEY,\n type UiLayoutSurface,\n type UiLayoutStyle,\n type UiLayoutType,\n type UiLayoutWidth,\n} from '../types/layout.types';\n\ninterface LayoutMutationOptions {\n persist?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutService {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly surfaceState = signal<UiLayoutSurface>(this.getStoredSurface());\n private readonly typeState = signal<UiLayoutType>(this.getStoredType());\n private readonly styleState = signal<UiLayoutStyle>(this.getStoredStyle());\n private readonly widthState = signal<UiLayoutWidth>(this.getStoredWidth());\n\n readonly surface = this.surfaceState.asReadonly();\n readonly type = this.typeState.asReadonly();\n readonly appearance = this.styleState.asReadonly();\n readonly style = this.styleState.asReadonly();\n readonly width = this.widthState.asReadonly();\n\n registerDefaults(defaults: {\n surface?: UiLayoutSurface;\n appearance?: UiLayoutStyle;\n type?: UiLayoutType;\n width?: UiLayoutWidth;\n }): this {\n if (defaults.surface !== undefined) {\n this.registerSurface(defaults.surface);\n }\n\n if (defaults.appearance !== undefined) {\n this.registerAppearance(defaults.appearance);\n }\n\n if (defaults.type !== undefined) {\n this.registerType(defaults.type);\n }\n\n if (defaults.width !== undefined) {\n this.registerWidth(defaults.width);\n }\n\n return this;\n }\n\n registerSurface(surface: UiLayoutSurface): void {\n const storedSurface = this.readStorage(UI_LAYOUT_SURFACE_STORAGE_KEY);\n\n if (isUiLayoutSurface(storedSurface)) {\n this.surfaceState.set(storedSurface);\n return;\n }\n\n this.setSurface(surface);\n }\n\n registerType(type: UiLayoutType): void {\n const storedType = this.readStorage(UI_LAYOUT_TYPE_STORAGE_KEY);\n\n if (isUiLayoutType(storedType)) {\n this.typeState.set(storedType);\n return;\n }\n\n this.setType(type);\n }\n\n registerAppearance(appearance: UiLayoutStyle): void {\n this.setAppearance(this.getStoredAppearanceOrDefault(appearance));\n }\n\n registerStyle(style: UiLayoutStyle): void {\n this.registerAppearance(style);\n }\n\n registerWidth(width: UiLayoutWidth): void {\n const storedWidth = this.readStorage(UI_LAYOUT_WIDTH_STORAGE_KEY);\n\n if (isUiLayoutWidth(storedWidth)) {\n this.widthState.set(storedWidth);\n return;\n }\n\n this.setWidth(width);\n }\n\n setSurface(surface: UiLayoutSurface, options: LayoutMutationOptions = {}): void {\n this.surfaceState.set(surface);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_SURFACE_STORAGE_KEY, surface);\n }\n\n setType(type: UiLayoutType, options: LayoutMutationOptions = {}): void {\n this.typeState.set(type);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_TYPE_STORAGE_KEY, type);\n }\n\n setAppearance(appearance: UiLayoutStyle, options: LayoutMutationOptions = {}): void {\n this.styleState.set(appearance);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_APPEARANCE_STORAGE_KEY, appearance);\n this.removeStorage(UI_LAYOUT_STYLE_STORAGE_KEY);\n }\n\n setStyle(style: UiLayoutStyle, options: LayoutMutationOptions = {}): void {\n this.setAppearance(style, options);\n }\n\n setWidth(width: UiLayoutWidth, options: LayoutMutationOptions = {}): void {\n this.widthState.set(width);\n\n if (options.persist === false) {\n return;\n }\n\n this.writeStorage(UI_LAYOUT_WIDTH_STORAGE_KEY, width);\n }\n\n getStoredSurface(): UiLayoutSurface {\n const value = this.readStorage(UI_LAYOUT_SURFACE_STORAGE_KEY);\n return isUiLayoutSurface(value) ? value : UI_LAYOUT_DEFAULT_SURFACE;\n }\n\n getStoredType(): UiLayoutType {\n const value = this.readStorage(UI_LAYOUT_TYPE_STORAGE_KEY);\n return isUiLayoutType(value) ? value : UI_LAYOUT_DEFAULT_TYPE;\n }\n\n getStoredAppearance(): UiLayoutStyle {\n const value = this.readStoredAppearance();\n return value ?? UI_LAYOUT_DEFAULT_STYLE;\n }\n\n getStoredStyle(): UiLayoutStyle {\n return this.getStoredAppearance();\n }\n\n getStoredWidth(): UiLayoutWidth {\n const value = this.readStorage(UI_LAYOUT_WIDTH_STORAGE_KEY);\n return isUiLayoutWidth(value) ? value : UI_LAYOUT_DEFAULT_WIDTH;\n }\n\n private readStorage(key: string): string | null {\n const storage = this.getStorage();\n if (!storage) {\n return null;\n }\n\n try {\n return storage.getItem(key);\n } catch {\n return null;\n }\n }\n\n private removeStorage(key: string): void {\n const storage = this.getStorage();\n if (!storage) {\n return;\n }\n\n try {\n storage.removeItem(key);\n } catch {\n return;\n }\n }\n\n private writeStorage(key: string, value: string): void {\n const storage = this.getStorage();\n if (!storage) {\n return;\n }\n\n try {\n storage.setItem(key, value);\n } catch {\n return;\n }\n }\n\n private getStorage(): Storage | null {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n\n try {\n return localStorage;\n } catch {\n return null;\n }\n }\n\n private readStoredAppearance(): UiLayoutStyle | null {\n const appearance = this.readStorage(UI_LAYOUT_APPEARANCE_STORAGE_KEY);\n if (isUiLayoutStyle(appearance)) {\n return appearance;\n }\n\n const legacyStyle = this.readStorage(UI_LAYOUT_STYLE_STORAGE_KEY);\n return isUiLayoutStyle(legacyStyle) ? legacyStyle : null;\n }\n\n private getStoredAppearanceOrDefault(fallback: UiLayoutStyle): UiLayoutStyle {\n return this.readStoredAppearance() ?? fallback;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from './services/layout.service';\nimport {\n UI_LAYOUT_DEFAULT_STYLE,\n UI_LAYOUT_DEFAULT_SURFACE,\n UI_LAYOUT_DEFAULT_WIDTH,\n type UiLayoutStyle,\n type UiLayoutSurface,\n type UiLayoutWidth,\n} from './types/layout.types';\n\n@Component({\n selector: 'ui-layout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-surface]': 'resolvedSurface()',\n '[attr.data-layout-appearance]': 'resolvedAppearance()',\n '[attr.data-layout-style]': 'resolvedStyle()',\n '[attr.data-layout-width]': 'resolvedWidth()',\n '[attr.data-layout-type]': 'layout.type()',\n },\n template: `\n <div data-layout-stage [class]=\"frameStageClasses()\">\n @if (isBorderRail()) {\n <div\n aria-hidden=\"true\"\n data-layout-rail\n class=\"pointer-events-none col-start-1 row-start-1 z-0 overflow-visible\">\n <div data-layout-rail-anchor [class]=\"railAnchorClasses()\">\n <div\n data-layout-rail-top-left-horizontal\n class=\"absolute top-0 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-top-left-vertical\n class=\"absolute bottom-full left-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-rail-top-right-horizontal\n class=\"absolute top-0 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-top-right-vertical\n class=\"absolute bottom-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-rail-bottom-left-horizontal\n class=\"absolute bottom-0 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-bottom-left-vertical\n class=\"absolute top-full left-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-rail-bottom-right-horizontal\n class=\"absolute bottom-0 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-rail-bottom-right-vertical\n class=\"absolute top-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n\n @if (showsHorizontalInsetRails()) {\n <div data-layout-horizontal-top-rail class=\"absolute inset-x-0 top-12 h-0.5 bg-border\"></div>\n <div\n data-layout-horizontal-top-left-extension\n class=\"absolute top-12 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-horizontal-top-right-extension\n class=\"absolute top-12 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div data-layout-horizontal-bottom-rail class=\"absolute inset-x-0 bottom-12 h-0.5 bg-border\"></div>\n <div\n data-layout-horizontal-bottom-left-extension\n class=\"absolute bottom-12 right-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n <div\n data-layout-horizontal-bottom-right-extension\n class=\"absolute bottom-12 left-full h-0.5 w-[calc((100vw-100%)/2)] bg-border\"></div>\n }\n </div>\n </div>\n }\n\n <div data-layout-frame [class]=\"frameLayerClasses()\">\n <div [class]=\"contentShellClasses()\">\n <ng-content />\n </div>\n </div>\n </div>\n `,\n})\nexport class UiLayoutComponent {\n protected readonly layout = inject(LayoutService);\n\n readonly surface = input<UiLayoutSurface | null>(null);\n readonly appearance = input<UiLayoutStyle | null>(null);\n readonly layoutStyleAttribute = input<UiLayoutStyle | null>(null, { alias: 'layout-style' });\n readonly width = input<UiLayoutWidth | null>(null);\n readonly class = input<string>('');\n\n protected readonly appearanceInput = computed(() => this.appearance() ?? this.layoutStyleAttribute());\n protected readonly resolvedSurface = computed(() => this.surface() ?? this.layout.surface());\n protected readonly resolvedAppearance = computed(() => this.appearanceInput() ?? this.layout.appearance());\n protected readonly resolvedStyle = computed(() => this.layout.style());\n protected readonly resolvedWidth = computed(() => this.width() ?? this.layout.width());\n protected readonly isBorderRail = computed(() => this.resolvedAppearance() === 'border-rail');\n protected readonly isFluidFrame = computed(() => this.resolvedWidth() === 'fluid' && this.layout.type() === 'fluid');\n protected readonly showsHorizontalInsetRails = computed(() => {\n const layoutType = this.layout.type();\n return this.isBorderRail() && (layoutType === 'horizontal' || layoutType === 'vertical');\n });\n protected readonly frameStageClasses = computed(() =>\n cn('relative grid min-h-0 min-w-0 grid-cols-1 grid-rows-1', this.frameSizeClasses()),\n );\n protected readonly railAnchorClasses = computed(() => 'relative h-full min-h-0 w-full min-w-0');\n protected readonly contentShellClasses = computed(() =>\n cn(\n 'relative z-10 min-h-0 min-w-0',\n this.isFluidFrame() ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full',\n this.isBorderRail() ? 'overflow-visible' : 'overflow-hidden',\n ),\n );\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'relative isolate h-dvh w-full min-w-0 box-border overflow-hidden text-foreground',\n this.isFluidFrame() ? 'grid place-items-center' : 'block',\n this.surfaceClasses(),\n this.widthPaddingClasses(),\n this.class(),\n ),\n );\n\n protected readonly frameClasses = computed(() =>\n cn(\n 'relative min-h-0 min-w-0 border-border bg-background/55 backdrop-blur-xs',\n this.frameSizeClasses(),\n this.isBorderRail() ? 'overflow-visible border-2' : 'overflow-hidden border',\n ),\n );\n protected readonly frameLayerClasses = computed(() => cn('col-start-1 row-start-1', this.frameClasses()));\n\n constructor() {\n effect(() => {\n const surface = this.surface();\n if (surface !== null) {\n this.layout.setSurface(surface, { persist: false });\n } else {\n this.layout.registerSurface(UI_LAYOUT_DEFAULT_SURFACE);\n }\n\n const appearance = this.appearanceInput();\n if (appearance !== null) {\n this.layout.setAppearance(appearance, { persist: false });\n } else {\n this.layout.registerAppearance(UI_LAYOUT_DEFAULT_STYLE);\n }\n\n const width = this.width();\n if (width !== null) {\n this.layout.setWidth(width, { persist: false });\n } else {\n this.layout.registerWidth(UI_LAYOUT_DEFAULT_WIDTH);\n }\n });\n }\n\n private surfaceClasses(): string {\n switch (this.resolvedSurface()) {\n case 'grid':\n return '[--ui-layout-grid-size:2rem] bg-background bg-[linear-gradient(hsl(var(--layout-grid-line)/var(--layout-grid-line-opacity))_1px,transparent_1px),linear-gradient(to_right,hsl(var(--layout-grid-line)/var(--layout-grid-line-opacity))_1px,transparent_1px)] bg-position-[center_center] bg-size-[var(--ui-layout-grid-size)_var(--ui-layout-grid-size)]';\n case 'honeycome':\n return 'bg-background bg-[radial-gradient(circle_at_0_0,hsl(var(--layout-grid-line)/var(--layout-grid-dot-opacity))_1px,transparent_1.5px)] bg-position-[center_center] bg-size-[1.25rem_1.25rem]';\n case 'line-vertical':\n return 'bg-background bg-[linear-gradient(to_right,hsl(var(--layout-grid-line)/var(--layout-grid-dot-opacity))_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';\n case 'line-horizontal':\n return 'bg-background bg-[linear-gradient(hsl(var(--layout-grid-line)/var(--layout-grid-dot-opacity))_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';\n default:\n return 'bg-background';\n }\n }\n\n private widthPaddingClasses(): string {\n switch (this.resolvedWidth()) {\n case 'wide':\n return 'p-4 lg:p-12';\n case 'container':\n return 'p-4 lg:px-0 lg:py-16';\n case 'fluid':\n return 'p-4 sm:p-6 lg:p-8';\n default:\n return 'p-4';\n }\n }\n\n private frameSizeClasses(): string {\n if (this.isFluidFrame()) {\n return 'h-auto w-auto max-h-full max-w-full';\n }\n\n return this.resolvedWidth() === 'container' ? 'h-full w-full lg:container lg:mx-auto' : 'h-full w-full';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-vertical',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'vertical',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutVerticalComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'grid h-full min-h-0 w-full min-w-0 grid-cols-[auto_minmax(0,1fr)]',\n this.layout.style() === 'border-rail' ? 'overflow-visible' : 'overflow-hidden',\n this.class(),\n ),\n );\n\n constructor() {\n this.layout.setType('vertical', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-horizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'horizontal',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutHorizontalComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden', this.class()),\n );\n\n constructor() {\n this.layout.setType('horizontal', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'empty',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutEmptyComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('h-full min-h-0 w-full min-w-0 overflow-hidden', this.class()));\n\n constructor() {\n this.layout.setType('empty', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-fluid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-layout-type': 'fluid',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutFluidComponent {\n private readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'grid min-h-0 min-w-0 place-items-center overflow-auto',\n this.layout.width() === 'fluid' ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full',\n this.class(),\n ),\n );\n\n constructor() {\n this.layout.setType('fluid', { persist: false });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChild, inject, input } from '@angular/core';\nimport { UiNavComponent } from '@edsis/ui/nav';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-nav',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.data-layout-type]': 'layout.type()',\n '[attr.data-layout-appearance]': 'layout.appearance()',\n '[attr.data-layout-style]': 'layout.style()',\n '[attr.data-layout-nav-rail-offset]': 'resolvedRailOffset()',\n },\n template: `\n @if (showsVerticalRail()) {\n <div\n aria-hidden=\"true\"\n data-layout-nav-rail\n class=\"pointer-events-none absolute inset-y-0 right-0 z-20 w-0.5 transition-transform duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none\"\n [style.transform]=\"railTransform()\">\n <div data-layout-nav-rail-line class=\"absolute inset-y-0 right-0 w-0.5 bg-border\"></div>\n <div\n data-layout-nav-rail-top\n class=\"absolute bottom-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n <div\n data-layout-nav-rail-bottom\n class=\"absolute top-full right-0 h-[calc((100dvh-100%)/2)] w-0.5 bg-border\"></div>\n </div>\n }\n\n <ng-content />\n `,\n})\nexport class UiLayoutNavComponent {\n protected readonly layout = inject(LayoutService);\n protected readonly projectedNav = contentChild(UiNavComponent);\n\n readonly ariaLabel = input<string>('Layout navigation');\n readonly railOffset = input<string | null>(null);\n readonly class = input<string>('');\n protected readonly showsVerticalRail = computed(\n () => this.layout.type() === 'vertical' && this.layout.appearance() === 'border-rail',\n );\n protected readonly resolvedRailOffset = computed(\n () => this.railOffset() ?? this.projectedNav()?.previewRailOffset() ?? '0px',\n );\n protected readonly railTransform = computed(() => `translateX(${this.resolvedRailOffset()})`);\n\n protected readonly classes = computed(() => {\n const layoutType = this.layout.type();\n const showsVerticalRail = this.showsVerticalRail();\n\n return cn(\n 'relative block min-h-0 min-w-0',\n layoutType === 'horizontal' && 'h-12 min-h-12 w-full shrink-0 overflow-visible',\n layoutType === 'vertical' &&\n (showsVerticalRail\n ? 'h-full w-max max-w-full shrink-0 overflow-visible'\n : 'h-full w-max max-w-full shrink-0 overflow-hidden'),\n layoutType === 'empty' && 'hidden',\n this.class(),\n );\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { LayoutService } from '../services/layout.service';\n\n@Component({\n selector: 'ui-layout-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-layout-type]': 'layout.type()',\n '[attr.data-layout-width]': 'layout.width()',\n },\n template: `<ng-content />`,\n})\nexport class UiLayoutContentComponent {\n protected readonly layout = inject(LayoutService);\n\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => {\n const layoutType = this.layout.type();\n\n return cn(\n 'block min-h-0 min-w-0 overflow-auto',\n layoutType === 'horizontal' && 'flex-1',\n layoutType === 'vertical' && 'h-full',\n layoutType === 'empty' && 'h-full w-full',\n this.layout.width() === 'container' && 'w-full lg:container lg:mx-auto',\n this.class(),\n );\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { cn } from '@edsis/ui/utils';
4
4
  import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import { Router, NavigationEnd, RouterLink, RouterLinkActive } from '@angular/router';
7
+ import { UiIconComponent } from '@edsis/ui/icon';
7
8
 
8
9
  class NavIconDirective {
9
10
  template = inject(TemplateRef);
@@ -487,11 +488,8 @@ class NavItemContentComponent {
487
488
  subtitleClasses = computed(() => cn('block truncate text-xs font-normal text-muted-foreground', this.item().classes?.subtitle), ...(ngDevMode ? [{ debugName: "subtitleClasses" }] : /* istanbul ignore next */ []));
488
489
  compactFallbackClasses = computed(() => cn('inline-flex h-5 min-w-5 items-center justify-center text-xs font-semibold uppercase'), ...(ngDevMode ? [{ debugName: "compactFallbackClasses" }] : /* istanbul ignore next */ []));
489
490
  defaultBadgeClasses = computed(() => cn('ml-auto inline-flex h-5 shrink-0 items-center rounded-full px-2 text-xs font-medium', this.active() ? 'bg-background text-foreground' : 'bg-muted text-muted-foreground'), ...(ngDevMode ? [{ debugName: "defaultBadgeClasses" }] : /* istanbul ignore next */ []));
490
- defaultIconClasses = computed(() => cn('inline-flex h-4 w-4 shrink-0 rounded-full border', this.usesStraightVerticalSurface()
491
- ? 'border-transparent bg-transparent'
492
- : this.active()
493
- ? 'border-primary'
494
- : 'border-border bg-muted', this.item().classes?.icon), ...(ngDevMode ? [{ debugName: "defaultIconClasses" }] : /* istanbul ignore next */ []));
491
+ defaultIconSize = computed(() => (this.usesStraightVerticalSurface() ? 18 : 16), ...(ngDevMode ? [{ debugName: "defaultIconSize" }] : /* istanbul ignore next */ []));
492
+ defaultIconClasses = computed(() => cn('text-current', this.item().classes?.icon), ...(ngDevMode ? [{ debugName: "defaultIconClasses" }] : /* istanbul ignore next */ []));
495
493
  iconContext = computed(() => this.nav.iconContext(this.item(), this.active(), this.level(), this.orientation()), ...(ngDevMode ? [{ debugName: "iconContext" }] : /* istanbul ignore next */ []));
496
494
  compactFallback() {
497
495
  return this.nav.compactFallback(this.item());
@@ -501,12 +499,12 @@ class NavItemContentComponent {
501
499
  }
502
500
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: NavItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
503
501
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: NavItemContentComponent, isStandalone: true, selector: "ui-nav-item-content", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, collapseTree: { classPropertyName: "collapseTree", publicName: "collapseTree", isSignal: true, isRequired: false, transformFunction: null }, iconTemplate: { classPropertyName: "iconTemplate", publicName: "iconTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, ngImport: i0, template: `
504
- @if (item().icon) {
502
+ @if (item().icon; as iconName) {
505
503
  <span data-ui-nav-icon-slot="true" [class]="iconSlotClasses()">
506
504
  @if (iconTemplate(); as customIcon) {
507
505
  <ng-container [ngTemplateOutlet]="customIcon.template" [ngTemplateOutletContext]="iconContext()" />
508
506
  } @else {
509
- <span aria-hidden="true" [class]="defaultIconClasses()" [attr.data-icon]="item().icon"></span>
507
+ <ui-icon [name]="iconName" [class]="defaultIconClasses()" [size]="defaultIconSize()" />
510
508
  }
511
509
  </span>
512
510
  }
@@ -527,24 +525,24 @@ class NavItemContentComponent {
527
525
  @if (compact() && !item().icon) {
528
526
  <span aria-hidden="true" [class]="compactFallbackClasses()">{{ compactFallback() }}</span>
529
527
  }
530
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
528
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "class", "size", "fill", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
531
529
  }
532
530
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: NavItemContentComponent, decorators: [{
533
531
  type: Component,
534
532
  args: [{
535
533
  selector: 'ui-nav-item-content',
536
534
  changeDetection: ChangeDetectionStrategy.OnPush,
537
- imports: [NgTemplateOutlet],
535
+ imports: [NgTemplateOutlet, UiIconComponent],
538
536
  host: {
539
537
  class: 'contents',
540
538
  },
541
539
  template: `
542
- @if (item().icon) {
540
+ @if (item().icon; as iconName) {
543
541
  <span data-ui-nav-icon-slot="true" [class]="iconSlotClasses()">
544
542
  @if (iconTemplate(); as customIcon) {
545
543
  <ng-container [ngTemplateOutlet]="customIcon.template" [ngTemplateOutletContext]="iconContext()" />
546
544
  } @else {
547
- <span aria-hidden="true" [class]="defaultIconClasses()" [attr.data-icon]="item().icon"></span>
545
+ <ui-icon [name]="iconName" [class]="defaultIconClasses()" [size]="defaultIconSize()" />
548
546
  }
549
547
  </span>
550
548
  }
@@ -1166,7 +1164,7 @@ class NavHorizontalComponent {
1166
1164
  }
1167
1165
  triggerClasses(item) {
1168
1166
  return cn('ui-nav-trigger group/nav inline-flex min-w-0 items-center gap-3 rounded-md text-sm font-medium transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', this.appearance() === 'flyout'
1169
- ? 'h-10 rounded-full border border-border/60 px-4 py-2 shadow-sm'
1167
+ ? 'h-10 rounded-full border border-[hsl(var(--border)/var(--opacity-60))] px-4 py-2 shadow-sm'
1170
1168
  : 'h-9 px-3 py-2', this.compact() && 'w-10 justify-center px-0', this.isItemActive(item)
1171
1169
  ? 'bg-accent text-accent-foreground'
1172
1170
  : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground', item.classes?.wrapper, this.itemClass());
@@ -1176,7 +1174,7 @@ class NavHorizontalComponent {
1176
1174
  }
1177
1175
  panelClasses(item) {
1178
1176
  return cn(this.appearance() === 'flyout'
1179
- ? 'absolute left-0 top-[calc(100%+0.75rem)] z-50 rounded-2xl border border-border/70 bg-background/95 p-3 text-foreground shadow-2xl backdrop-blur'
1177
+ ? 'absolute left-0 top-[calc(100%+0.75rem)] z-50 rounded-2xl border border-[hsl(var(--border)/var(--opacity-70))] bg-[hsl(var(--background)/var(--opacity-95))] p-3 text-foreground shadow-2xl backdrop-blur'
1180
1178
  : 'absolute left-0 top-full z-50 mt-2 rounded-xl border border-border bg-popover p-2 text-popover-foreground shadow-lg', item.type === 'mega' ? 'w-[min(92vw,44rem)]' : 'min-w-56');
1181
1179
  }
1182
1180
  panelListClasses(item) {
@@ -1642,9 +1640,9 @@ class NavDockbarComponent {
1642
1640
  isDrawerOpen = computed(() => this.nav.isDrawerOpen(this.navId()), ...(ngDevMode ? [{ debugName: "isDrawerOpen" }] : /* istanbul ignore next */ []));
1643
1641
  panelId = computed(() => `ui-nav-dockbar-${this.safeId(this.navId())}`, ...(ngDevMode ? [{ debugName: "panelId" }] : /* istanbul ignore next */ []));
1644
1642
  hostClasses = computed(() => cn('block', this.isDrawerMode() ? 'w-auto' : 'w-16', this.position() === 'right' && 'justify-self-end'), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
1645
- railClasses = computed(() => cn('flex min-h-full w-16 justify-center rounded-2xl border border-border/60 bg-background/70 px-2 py-3 backdrop-blur', this.position() === 'right' && 'ml-auto'), ...(ngDevMode ? [{ debugName: "railClasses" }] : /* istanbul ignore next */ []));
1643
+ railClasses = computed(() => cn('flex min-h-full w-16 justify-center rounded-2xl border border-[hsl(var(--border)/var(--opacity-60))] bg-[hsl(var(--background)/var(--opacity-70))] px-2 py-3 backdrop-blur', this.position() === 'right' && 'ml-auto'), ...(ngDevMode ? [{ debugName: "railClasses" }] : /* istanbul ignore next */ []));
1646
1644
  triggerClasses() {
1647
- return cn('inline-flex h-11 w-11 items-center justify-center rounded-2xl border border-border/60 bg-background/80 text-foreground shadow-sm transition-colors', 'hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring');
1645
+ return cn('inline-flex h-11 w-11 items-center justify-center rounded-2xl border border-[hsl(var(--border)/var(--opacity-60))] bg-[hsl(var(--background)/var(--opacity-80))] text-foreground shadow-sm transition-colors', 'hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring');
1648
1646
  }
1649
1647
  drawerClasses() {
1650
1648
  return cn('fixed bottom-4 top-4 z-50 w-72 overflow-y-auto rounded-2xl border border-border bg-background p-4 shadow-2xl', this.position() === 'right' ? 'right-4' : 'left-4');
@@ -1705,7 +1703,10 @@ class NavDockbarComponent {
1705
1703
  </button>
1706
1704
 
1707
1705
  @if (isDrawerOpen()) {
1708
- <div class="fixed inset-0 z-40 bg-black/40" aria-hidden="true" (click)="closeDrawer()"></div>
1706
+ <div
1707
+ class="fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]"
1708
+ aria-hidden="true"
1709
+ (click)="closeDrawer()"></div>
1709
1710
 
1710
1711
  <aside
1711
1712
  [id]="panelId()"
@@ -1785,7 +1786,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
1785
1786
  </button>
1786
1787
 
1787
1788
  @if (isDrawerOpen()) {
1788
- <div class="fixed inset-0 z-40 bg-black/40" aria-hidden="true" (click)="closeDrawer()"></div>
1789
+ <div
1790
+ class="fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]"
1791
+ aria-hidden="true"
1792
+ (click)="closeDrawer()"></div>
1789
1793
 
1790
1794
  <aside
1791
1795
  [id]="panelId()"
@@ -1989,7 +1993,7 @@ class UiNavFooterComponent {
1989
1993
  isHorizontal = computed(() => this.shell?.displayState().orientation === 'horizontal', ...(ngDevMode ? [{ debugName: "isHorizontal" }] : /* istanbul ignore next */ []));
1990
1994
  hostClasses = computed(() => cn(this.isHorizontal()
1991
1995
  ? 'relative z-10 block h-full w-auto shrink-0'
1992
- : 'sticky bottom-0 z-10 block h-12 shrink-0 border-t border-border/70', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
1996
+ : 'sticky bottom-0 z-10 block h-12 shrink-0 border-t border-[hsl(var(--border)/var(--opacity-70))]', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
1993
1997
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiNavFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1994
1998
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: UiNavFooterComponent, isStandalone: true, selector: "ui-nav-footer", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
1995
1999
  <div class="flex h-full items-center">
@@ -2031,7 +2035,7 @@ class UiNavHeaderComponent {
2031
2035
  contentClasses = computed(() => (this.isHorizontal() ? 'min-w-0' : 'min-w-0 flex-1'), ...(ngDevMode ? [{ debugName: "contentClasses" }] : /* istanbul ignore next */ []));
2032
2036
  hostClasses = computed(() => cn(this.isHorizontal()
2033
2037
  ? 'relative z-10 block h-full w-auto shrink-0'
2034
- : 'sticky top-0 z-10 block h-12 shrink-0 border-b border-border/70', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
2038
+ : 'sticky top-0 z-10 block h-12 shrink-0 border-b border-[hsl(var(--border)/var(--opacity-70))]', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
2035
2039
  toggleCollapsed() {
2036
2040
  this.shell.toggleCollapsed();
2037
2041
  }
@@ -2050,23 +2054,18 @@ class UiNavHeaderComponent {
2050
2054
  [attr.title]="toggleAriaLabel()"
2051
2055
  data-ui-nav-header-toggle="true"
2052
2056
  (click)="toggleCollapsed()">
2053
- <span
2054
- aria-hidden="true"
2055
- data-ui-nav-header-toggle-icon="true"
2056
- class="material-symbols-outlined leading-none"
2057
- style="font-size: 18px; line-height: 18px;">
2058
- {{ toggleIconName() }}
2059
- </span>
2057
+ <ui-icon data-ui-nav-header-toggle-icon="true" [name]="toggleIconName()" [size]="18" />
2060
2058
  </button>
2061
2059
  }
2062
2060
  </div>
2063
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2061
+ `, isInline: true, dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "class", "size", "fill", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2064
2062
  }
2065
2063
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiNavHeaderComponent, decorators: [{
2066
2064
  type: Component,
2067
2065
  args: [{
2068
2066
  selector: 'ui-nav-header',
2069
2067
  changeDetection: ChangeDetectionStrategy.OnPush,
2068
+ imports: [UiIconComponent],
2070
2069
  host: {
2071
2070
  '[class]': 'hostClasses()',
2072
2071
  '[attr.data-collapsed]': 'displayCollapsed()',
@@ -2085,13 +2084,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
2085
2084
  [attr.title]="toggleAriaLabel()"
2086
2085
  data-ui-nav-header-toggle="true"
2087
2086
  (click)="toggleCollapsed()">
2088
- <span
2089
- aria-hidden="true"
2090
- data-ui-nav-header-toggle-icon="true"
2091
- class="material-symbols-outlined leading-none"
2092
- style="font-size: 18px; line-height: 18px;">
2093
- {{ toggleIconName() }}
2094
- </span>
2087
+ <ui-icon data-ui-nav-header-toggle-icon="true" [name]="toggleIconName()" [size]="18" />
2095
2088
  </button>
2096
2089
  }
2097
2090
  </div>
@@ -2104,7 +2097,7 @@ class UiNavMainComponent {
2104
2097
  orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
2105
2098
  hostClasses = computed(() => cn('min-h-0 flex-1', this.orientation() === 'horizontal'
2106
2099
  ? 'flex h-full min-w-0 items-stretch justify-center overflow-visible'
2107
- : 'block overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-thumb-primary scrollbar-track-primary/10', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
2100
+ : 'block overflow-y-auto overflow-x-hidden', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
2108
2101
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiNavMainComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2109
2102
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: UiNavMainComponent, isStandalone: true, selector: "ui-nav-main", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2110
2103
  }
@@ -2180,8 +2173,8 @@ class UiNavComponent {
2180
2173
  : 'flex-col overflow-hidden', this.resolvedState().position === 'right' ? 'origin-right' : 'origin-left', this.previewRailExpanded() && [
2181
2174
  'absolute inset-y-0 z-20 w-76 overflow-hidden bg-background shadow-xl',
2182
2175
  this.resolvedState().position === 'right'
2183
- ? 'right-0 border-l border-border/70'
2184
- : 'left-0 border-r border-border/70',
2176
+ ? 'right-0 border-l border-[hsl(var(--border)/var(--opacity-70))]'
2177
+ : 'left-0 border-r border-[hsl(var(--border)/var(--opacity-70))]',
2185
2178
  ]), ...(ngDevMode ? [{ debugName: "shellClasses" }] : /* istanbul ignore next */ []));
2186
2179
  state = this.resolvedState;
2187
2180
  hostClasses = computed(() => cn('relative block min-h-0 text-foreground transition-[width] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none', this.resolvedState().orientation === 'horizontal'