@edsis/ui 21.3.6 → 21.3.8

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 (35) hide show
  1. package/fesm2022/edsis-ui-avatar.mjs +1 -1
  2. package/fesm2022/edsis-ui-avatar.mjs.map +1 -1
  3. package/fesm2022/edsis-ui-card.mjs +1 -1
  4. package/fesm2022/edsis-ui-card.mjs.map +1 -1
  5. package/fesm2022/edsis-ui-chart.mjs +12 -12
  6. package/fesm2022/edsis-ui-chart.mjs.map +1 -1
  7. package/fesm2022/edsis-ui-composer.mjs +2 -2
  8. package/fesm2022/edsis-ui-composer.mjs.map +1 -1
  9. package/fesm2022/edsis-ui-editor.mjs +9 -2
  10. package/fesm2022/edsis-ui-editor.mjs.map +1 -1
  11. package/fesm2022/edsis-ui-input-group.mjs +2 -2
  12. package/fesm2022/edsis-ui-input-group.mjs.map +1 -1
  13. package/fesm2022/edsis-ui-kbd.mjs +1 -1
  14. package/fesm2022/edsis-ui-kbd.mjs.map +1 -1
  15. package/fesm2022/edsis-ui-layout.mjs +91 -43
  16. package/fesm2022/edsis-ui-layout.mjs.map +1 -1
  17. package/fesm2022/edsis-ui-nav.mjs +17 -11
  18. package/fesm2022/edsis-ui-nav.mjs.map +1 -1
  19. package/fesm2022/edsis-ui-page.mjs +42 -13
  20. package/fesm2022/edsis-ui-page.mjs.map +1 -1
  21. package/fesm2022/edsis-ui-pillbox.mjs +1 -1
  22. package/fesm2022/edsis-ui-pillbox.mjs.map +1 -1
  23. package/fesm2022/edsis-ui-scroll-area.mjs +2 -2
  24. package/fesm2022/edsis-ui-scroll-area.mjs.map +1 -1
  25. package/fesm2022/edsis-ui-theme.mjs +7 -3
  26. package/fesm2022/edsis-ui-theme.mjs.map +1 -1
  27. package/fesm2022/edsis-ui-timeline.mjs +17 -17
  28. package/fesm2022/edsis-ui-timeline.mjs.map +1 -1
  29. package/layout/README.md +53 -36
  30. package/package.json +1 -1
  31. package/page/README.md +103 -5
  32. package/types/edsis-ui-editor.d.ts +1 -0
  33. package/types/edsis-ui-layout.d.ts +29 -15
  34. package/types/edsis-ui-page.d.ts +26 -3
  35. package/types/edsis-ui-theme.d.ts +6 -2
@@ -4,10 +4,10 @@ import { cn } from '@edsis/ui/utils';
4
4
  import { isPlatformBrowser } from '@angular/common';
5
5
  import { UiNavComponent } from '@edsis/ui/nav';
6
6
 
7
- const UI_LAYOUT_TYPES = ['vertical', 'horizontal', 'empty'];
7
+ const UI_LAYOUT_TYPES = ['vertical', 'horizontal', 'empty', 'fluid'];
8
8
  const UI_LAYOUT_SURFACES = ['flat', 'grid', 'honeycome', 'line-vertical', 'line-horizontal'];
9
9
  const UI_LAYOUT_STYLES = ['flat', 'border-rail'];
10
- const UI_LAYOUT_WIDTHS = ['full', 'wide', 'container'];
10
+ const UI_LAYOUT_WIDTHS = ['full', 'wide', 'container', 'fluid'];
11
11
  const UI_LAYOUT_DEFAULT_SURFACE = 'flat';
12
12
  const UI_LAYOUT_DEFAULT_TYPE = 'vertical';
13
13
  const UI_LAYOUT_DEFAULT_STYLE = 'flat';
@@ -86,24 +86,36 @@ class LayoutService {
86
86
  }
87
87
  this.setWidth(width);
88
88
  }
89
- setSurface(surface) {
89
+ setSurface(surface, options = {}) {
90
90
  this.surfaceState.set(surface);
91
+ if (options.persist === false) {
92
+ return;
93
+ }
91
94
  this.writeStorage(UI_LAYOUT_SURFACE_STORAGE_KEY, surface);
92
95
  }
93
- setType(type) {
96
+ setType(type, options = {}) {
94
97
  this.typeState.set(type);
98
+ if (options.persist === false) {
99
+ return;
100
+ }
95
101
  this.writeStorage(UI_LAYOUT_TYPE_STORAGE_KEY, type);
96
102
  }
97
- setAppearance(appearance) {
103
+ setAppearance(appearance, options = {}) {
98
104
  this.styleState.set(appearance);
105
+ if (options.persist === false) {
106
+ return;
107
+ }
99
108
  this.writeStorage(UI_LAYOUT_APPEARANCE_STORAGE_KEY, appearance);
100
109
  this.removeStorage(UI_LAYOUT_STYLE_STORAGE_KEY);
101
110
  }
102
- setStyle(style) {
103
- this.setAppearance(style);
111
+ setStyle(style, options = {}) {
112
+ this.setAppearance(style, options);
104
113
  }
105
- setWidth(width) {
114
+ setWidth(width, options = {}) {
106
115
  this.widthState.set(width);
116
+ if (options.persist === false) {
117
+ return;
118
+ }
107
119
  this.writeStorage(UI_LAYOUT_WIDTH_STORAGE_KEY, width);
108
120
  }
109
121
  getStoredSurface() {
@@ -204,34 +216,36 @@ class UiLayoutComponent {
204
216
  resolvedStyle = computed(() => this.layout.style(), ...(ngDevMode ? [{ debugName: "resolvedStyle" }] : /* istanbul ignore next */ []));
205
217
  resolvedWidth = computed(() => this.width() ?? this.layout.width(), ...(ngDevMode ? [{ debugName: "resolvedWidth" }] : /* istanbul ignore next */ []));
206
218
  isBorderRail = computed(() => this.resolvedAppearance() === 'border-rail', ...(ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []));
219
+ isFluidFrame = computed(() => this.resolvedWidth() === 'fluid' && this.layout.type() === 'fluid', ...(ngDevMode ? [{ debugName: "isFluidFrame" }] : /* istanbul ignore next */ []));
207
220
  showsHorizontalInsetRails = computed(() => {
208
221
  const layoutType = this.layout.type();
209
222
  return this.isBorderRail() && (layoutType === 'horizontal' || layoutType === 'vertical');
210
223
  }, ...(ngDevMode ? [{ debugName: "showsHorizontalInsetRails" }] : /* istanbul ignore next */ []));
211
- railPaddingClasses = computed(() => cn('h-full w-full', this.widthClasses()), ...(ngDevMode ? [{ debugName: "railPaddingClasses" }] : /* istanbul ignore next */ []));
212
- railAnchorClasses = computed(() => cn('relative h-full min-h-0 min-w-0', this.frameWidthClasses()), ...(ngDevMode ? [{ debugName: "railAnchorClasses" }] : /* istanbul ignore next */ []));
213
- contentShellClasses = computed(() => cn('relative z-10 h-full min-h-0 w-full min-w-0', this.isBorderRail() ? 'overflow-visible' : 'overflow-hidden'), ...(ngDevMode ? [{ debugName: "contentShellClasses" }] : /* istanbul ignore next */ []));
214
- hostClasses = computed(() => cn('relative isolate block h-dvh w-full min-w-0 box-border overflow-hidden text-foreground', this.surfaceClasses(), this.widthClasses(), this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
215
- frameClasses = computed(() => cn('relative h-full min-h-0 min-w-0 border-border bg-background/55 backdrop-blur-xs', this.frameWidthClasses(), this.isBorderRail() ? 'overflow-visible border-2' : 'overflow-hidden border'), ...(ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []));
224
+ frameStageClasses = computed(() => cn('relative grid min-h-0 min-w-0 grid-cols-1 grid-rows-1', this.frameSizeClasses()), ...(ngDevMode ? [{ debugName: "frameStageClasses" }] : /* istanbul ignore next */ []));
225
+ railAnchorClasses = computed(() => 'relative h-full min-h-0 w-full min-w-0', ...(ngDevMode ? [{ debugName: "railAnchorClasses" }] : /* istanbul ignore next */ []));
226
+ contentShellClasses = computed(() => cn('relative z-10 min-h-0 min-w-0', this.isFluidFrame() ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full', this.isBorderRail() ? 'overflow-visible' : 'overflow-hidden'), ...(ngDevMode ? [{ debugName: "contentShellClasses" }] : /* istanbul ignore next */ []));
227
+ hostClasses = computed(() => cn('relative isolate h-dvh w-full min-w-0 box-border overflow-hidden text-foreground', this.isFluidFrame() ? 'grid place-items-center' : 'block', this.surfaceClasses(), this.widthPaddingClasses(), this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
228
+ frameClasses = computed(() => cn('relative min-h-0 min-w-0 border-border bg-background/55 backdrop-blur-xs', this.frameSizeClasses(), this.isBorderRail() ? 'overflow-visible border-2' : 'overflow-hidden border'), ...(ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []));
229
+ frameLayerClasses = computed(() => cn('col-start-1 row-start-1', this.frameClasses()), ...(ngDevMode ? [{ debugName: "frameLayerClasses" }] : /* istanbul ignore next */ []));
216
230
  constructor() {
217
231
  effect(() => {
218
232
  const surface = this.surface();
219
233
  if (surface !== null) {
220
- this.layout.setSurface(surface);
234
+ this.layout.setSurface(surface, { persist: false });
221
235
  }
222
236
  else {
223
237
  this.layout.registerSurface(UI_LAYOUT_DEFAULT_SURFACE);
224
238
  }
225
239
  const appearance = this.appearanceInput();
226
240
  if (appearance !== null) {
227
- this.layout.setAppearance(appearance);
241
+ this.layout.setAppearance(appearance, { persist: false });
228
242
  }
229
243
  else {
230
244
  this.layout.registerAppearance(UI_LAYOUT_DEFAULT_STYLE);
231
245
  }
232
246
  const width = this.width();
233
247
  if (width !== null) {
234
- this.layout.setWidth(width);
248
+ this.layout.setWidth(width, { persist: false });
235
249
  }
236
250
  else {
237
251
  this.layout.registerWidth(UI_LAYOUT_DEFAULT_WIDTH);
@@ -241,35 +255,43 @@ class UiLayoutComponent {
241
255
  surfaceClasses() {
242
256
  switch (this.resolvedSurface()) {
243
257
  case 'grid':
244
- 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)]';
245
259
  case 'honeycome':
246
- 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]';
247
261
  case 'line-vertical':
248
- 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]';
249
263
  case 'line-horizontal':
250
- 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]';
251
265
  default:
252
266
  return 'bg-background';
253
267
  }
254
268
  }
255
- widthClasses() {
269
+ widthPaddingClasses() {
256
270
  switch (this.resolvedWidth()) {
257
271
  case 'wide':
258
272
  return 'p-4 lg:p-12';
259
273
  case 'container':
260
274
  return 'p-4 lg:px-0 lg:py-16';
275
+ case 'fluid':
276
+ return 'p-4 sm:p-6 lg:p-8';
261
277
  default:
262
278
  return 'p-4';
263
279
  }
264
280
  }
265
- frameWidthClasses() {
266
- return this.resolvedWidth() === 'container' ? 'w-full lg:container lg:mx-auto' : 'w-full';
281
+ frameSizeClasses() {
282
+ if (this.isFluidFrame()) {
283
+ return 'h-auto w-auto max-h-full max-w-full';
284
+ }
285
+ return this.resolvedWidth() === 'container' ? 'h-full w-full lg:container lg:mx-auto' : 'h-full w-full';
267
286
  }
268
287
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
269
288
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: UiLayoutComponent, isStandalone: true, selector: "ui-layout", inputs: { surface: { classPropertyName: "surface", publicName: "surface", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, layoutStyleAttribute: { classPropertyName: "layoutStyleAttribute", publicName: "layout-style", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.data-surface": "resolvedSurface()", "attr.data-layout-appearance": "resolvedAppearance()", "attr.data-layout-style": "resolvedStyle()", "attr.data-layout-width": "resolvedWidth()", "attr.data-layout-type": "layout.type()" } }, ngImport: i0, template: `
270
- @if (isBorderRail()) {
271
- <div aria-hidden="true" data-layout-rail class="pointer-events-none absolute inset-0 z-0">
272
- <div [class]="railPaddingClasses()">
289
+ <div data-layout-stage [class]="frameStageClasses()">
290
+ @if (isBorderRail()) {
291
+ <div
292
+ aria-hidden="true"
293
+ data-layout-rail
294
+ class="pointer-events-none col-start-1 row-start-1 z-0 overflow-visible">
273
295
  <div data-layout-rail-anchor [class]="railAnchorClasses()">
274
296
  <div
275
297
  data-layout-rail-top-left-horizontal
@@ -314,12 +336,12 @@ class UiLayoutComponent {
314
336
  }
315
337
  </div>
316
338
  </div>
317
- </div>
318
- }
339
+ }
319
340
 
320
- <div [class]="frameClasses()">
321
- <div [class]="contentShellClasses()">
322
- <ng-content />
341
+ <div data-layout-frame [class]="frameLayerClasses()">
342
+ <div [class]="contentShellClasses()">
343
+ <ng-content />
344
+ </div>
323
345
  </div>
324
346
  </div>
325
347
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -338,9 +360,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
338
360
  '[attr.data-layout-type]': 'layout.type()',
339
361
  },
340
362
  template: `
341
- @if (isBorderRail()) {
342
- <div aria-hidden="true" data-layout-rail class="pointer-events-none absolute inset-0 z-0">
343
- <div [class]="railPaddingClasses()">
363
+ <div data-layout-stage [class]="frameStageClasses()">
364
+ @if (isBorderRail()) {
365
+ <div
366
+ aria-hidden="true"
367
+ data-layout-rail
368
+ class="pointer-events-none col-start-1 row-start-1 z-0 overflow-visible">
344
369
  <div data-layout-rail-anchor [class]="railAnchorClasses()">
345
370
  <div
346
371
  data-layout-rail-top-left-horizontal
@@ -385,12 +410,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
385
410
  }
386
411
  </div>
387
412
  </div>
388
- </div>
389
- }
413
+ }
390
414
 
391
- <div [class]="frameClasses()">
392
- <div [class]="contentShellClasses()">
393
- <ng-content />
415
+ <div data-layout-frame [class]="frameLayerClasses()">
416
+ <div [class]="contentShellClasses()">
417
+ <ng-content />
418
+ </div>
394
419
  </div>
395
420
  </div>
396
421
  `,
@@ -402,7 +427,7 @@ class UiLayoutVerticalComponent {
402
427
  class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
403
428
  classes = computed(() => cn('grid h-full min-h-0 w-full min-w-0 grid-cols-[auto_minmax(0,1fr)]', this.layout.style() === 'border-rail' ? 'overflow-visible' : 'overflow-hidden', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
404
429
  constructor() {
405
- this.layout.setType('vertical');
430
+ this.layout.setType('vertical', { persist: false });
406
431
  }
407
432
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiLayoutVerticalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
408
433
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: UiLayoutVerticalComponent, isStandalone: true, selector: "ui-layout-vertical", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-type": "vertical" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -425,7 +450,7 @@ class UiLayoutHorizontalComponent {
425
450
  class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
426
451
  classes = computed(() => cn('flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
427
452
  constructor() {
428
- this.layout.setType('horizontal');
453
+ this.layout.setType('horizontal', { persist: false });
429
454
  }
430
455
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiLayoutHorizontalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
431
456
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: UiLayoutHorizontalComponent, isStandalone: true, selector: "ui-layout-horizontal", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-type": "horizontal" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -448,7 +473,7 @@ class UiLayoutEmptyComponent {
448
473
  class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
449
474
  classes = computed(() => cn('h-full min-h-0 w-full min-w-0 overflow-hidden', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
450
475
  constructor() {
451
- this.layout.setType('empty');
476
+ this.layout.setType('empty', { persist: false });
452
477
  }
453
478
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiLayoutEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
454
479
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: UiLayoutEmptyComponent, isStandalone: true, selector: "ui-layout-empty", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-type": "empty" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -466,6 +491,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
466
491
  }]
467
492
  }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
468
493
 
494
+ class UiLayoutFluidComponent {
495
+ layout = inject(LayoutService);
496
+ class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
497
+ classes = computed(() => cn('grid min-h-0 min-w-0 place-items-center overflow-auto', this.layout.width() === 'fluid' ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
498
+ constructor() {
499
+ this.layout.setType('fluid', { persist: false });
500
+ }
501
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiLayoutFluidComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
502
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: UiLayoutFluidComponent, isStandalone: true, selector: "ui-layout-fluid", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-type": "fluid" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
503
+ }
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiLayoutFluidComponent, decorators: [{
505
+ type: Component,
506
+ args: [{
507
+ selector: 'ui-layout-fluid',
508
+ changeDetection: ChangeDetectionStrategy.OnPush,
509
+ host: {
510
+ '[class]': 'classes()',
511
+ 'data-layout-type': 'fluid',
512
+ },
513
+ template: `<ng-content />`,
514
+ }]
515
+ }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
516
+
469
517
  class UiLayoutNavComponent {
470
518
  layout = inject(LayoutService);
471
519
  projectedNav = contentChild(UiNavComponent, ...(ngDevMode ? [{ debugName: "projectedNav" }] : /* istanbul ignore next */ []));
@@ -568,5 +616,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
568
616
  * Generated bundle index. Do not edit.
569
617
  */
570
618
 
571
- export { LayoutService, UI_LAYOUT_APPEARANCE_STORAGE_KEY, UI_LAYOUT_DEFAULT_STYLE, UI_LAYOUT_DEFAULT_SURFACE, UI_LAYOUT_DEFAULT_TYPE, UI_LAYOUT_DEFAULT_WIDTH, UI_LAYOUT_STYLES, UI_LAYOUT_STYLE_STORAGE_KEY, UI_LAYOUT_SURFACES, UI_LAYOUT_SURFACE_STORAGE_KEY, UI_LAYOUT_TYPES, UI_LAYOUT_TYPE_STORAGE_KEY, UI_LAYOUT_WIDTHS, UI_LAYOUT_WIDTH_STORAGE_KEY, UiLayoutComponent, UiLayoutContentComponent, UiLayoutEmptyComponent, UiLayoutHorizontalComponent, UiLayoutNavComponent, UiLayoutVerticalComponent, isUiLayoutStyle, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth };
619
+ export { LayoutService, UI_LAYOUT_APPEARANCE_STORAGE_KEY, UI_LAYOUT_DEFAULT_STYLE, UI_LAYOUT_DEFAULT_SURFACE, UI_LAYOUT_DEFAULT_TYPE, UI_LAYOUT_DEFAULT_WIDTH, UI_LAYOUT_STYLES, UI_LAYOUT_STYLE_STORAGE_KEY, UI_LAYOUT_SURFACES, UI_LAYOUT_SURFACE_STORAGE_KEY, UI_LAYOUT_TYPES, UI_LAYOUT_TYPE_STORAGE_KEY, UI_LAYOUT_WIDTHS, UI_LAYOUT_WIDTH_STORAGE_KEY, UiLayoutComponent, UiLayoutContentComponent, UiLayoutEmptyComponent, UiLayoutFluidComponent, UiLayoutHorizontalComponent, UiLayoutNavComponent, UiLayoutVerticalComponent, isUiLayoutStyle, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth };
572
620
  //# sourceMappingURL=edsis-ui-layout.mjs.map
@@ -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/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'] 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'] 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\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): void {\n this.surfaceState.set(surface);\n this.writeStorage(UI_LAYOUT_SURFACE_STORAGE_KEY, surface);\n }\n\n setType(type: UiLayoutType): void {\n this.typeState.set(type);\n this.writeStorage(UI_LAYOUT_TYPE_STORAGE_KEY, type);\n }\n\n setAppearance(appearance: UiLayoutStyle): void {\n this.styleState.set(appearance);\n this.writeStorage(UI_LAYOUT_APPEARANCE_STORAGE_KEY, appearance);\n this.removeStorage(UI_LAYOUT_STYLE_STORAGE_KEY);\n }\n\n setStyle(style: UiLayoutStyle): void {\n this.setAppearance(style);\n }\n\n setWidth(width: UiLayoutWidth): void {\n this.widthState.set(width);\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 @if (isBorderRail()) {\n <div aria-hidden=\"true\" data-layout-rail class=\"pointer-events-none absolute inset-0 z-0\">\n <div [class]=\"railPaddingClasses()\">\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 </div>\n }\n\n <div [class]=\"frameClasses()\">\n <div [class]=\"contentShellClasses()\">\n <ng-content />\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 showsHorizontalInsetRails = computed(() => {\n const layoutType = this.layout.type();\n return this.isBorderRail() && (layoutType === 'horizontal' || layoutType === 'vertical');\n });\n protected readonly railPaddingClasses = computed(() => cn('h-full w-full', this.widthClasses()));\n protected readonly railAnchorClasses = computed(() =>\n cn('relative h-full min-h-0 min-w-0', this.frameWidthClasses()),\n );\n protected readonly contentShellClasses = computed(() =>\n cn('relative z-10 h-full min-h-0 w-full min-w-0', this.isBorderRail() ? 'overflow-visible' : 'overflow-hidden'),\n );\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'relative isolate block h-dvh w-full min-w-0 box-border overflow-hidden text-foreground',\n this.surfaceClasses(),\n this.widthClasses(),\n this.class(),\n ),\n );\n\n protected readonly frameClasses = computed(() =>\n cn(\n 'relative h-full min-h-0 min-w-0 border-border bg-background/55 backdrop-blur-xs',\n this.frameWidthClasses(),\n this.isBorderRail() ? 'overflow-visible border-2' : 'overflow-hidden border',\n ),\n );\n\n constructor() {\n effect(() => {\n const surface = this.surface();\n if (surface !== null) {\n this.layout.setSurface(surface);\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);\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);\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 widthClasses(): 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 default:\n return 'p-4';\n }\n }\n\n private frameWidthClasses(): string {\n return this.resolvedWidth() === 'container' ? 'w-full lg:container lg:mx-auto' : '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');\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');\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');\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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"}
@@ -1166,7 +1166,7 @@ class NavHorizontalComponent {
1166
1166
  }
1167
1167
  triggerClasses(item) {
1168
1168
  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'
1169
+ ? 'h-10 rounded-full border border-[hsl(var(--border)/var(--opacity-60))] px-4 py-2 shadow-sm'
1170
1170
  : 'h-9 px-3 py-2', this.compact() && 'w-10 justify-center px-0', this.isItemActive(item)
1171
1171
  ? 'bg-accent text-accent-foreground'
1172
1172
  : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground', item.classes?.wrapper, this.itemClass());
@@ -1176,7 +1176,7 @@ class NavHorizontalComponent {
1176
1176
  }
1177
1177
  panelClasses(item) {
1178
1178
  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'
1179
+ ? '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
1180
  : '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
1181
  }
1182
1182
  panelListClasses(item) {
@@ -1642,9 +1642,9 @@ class NavDockbarComponent {
1642
1642
  isDrawerOpen = computed(() => this.nav.isDrawerOpen(this.navId()), ...(ngDevMode ? [{ debugName: "isDrawerOpen" }] : /* istanbul ignore next */ []));
1643
1643
  panelId = computed(() => `ui-nav-dockbar-${this.safeId(this.navId())}`, ...(ngDevMode ? [{ debugName: "panelId" }] : /* istanbul ignore next */ []));
1644
1644
  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 */ []));
1645
+ 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
1646
  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');
1647
+ 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
1648
  }
1649
1649
  drawerClasses() {
1650
1650
  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 +1705,10 @@ class NavDockbarComponent {
1705
1705
  </button>
1706
1706
 
1707
1707
  @if (isDrawerOpen()) {
1708
- <div class="fixed inset-0 z-40 bg-black/40" aria-hidden="true" (click)="closeDrawer()"></div>
1708
+ <div
1709
+ class="fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]"
1710
+ aria-hidden="true"
1711
+ (click)="closeDrawer()"></div>
1709
1712
 
1710
1713
  <aside
1711
1714
  [id]="panelId()"
@@ -1785,7 +1788,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
1785
1788
  </button>
1786
1789
 
1787
1790
  @if (isDrawerOpen()) {
1788
- <div class="fixed inset-0 z-40 bg-black/40" aria-hidden="true" (click)="closeDrawer()"></div>
1791
+ <div
1792
+ class="fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]"
1793
+ aria-hidden="true"
1794
+ (click)="closeDrawer()"></div>
1789
1795
 
1790
1796
  <aside
1791
1797
  [id]="panelId()"
@@ -1989,7 +1995,7 @@ class UiNavFooterComponent {
1989
1995
  isHorizontal = computed(() => this.shell?.displayState().orientation === 'horizontal', ...(ngDevMode ? [{ debugName: "isHorizontal" }] : /* istanbul ignore next */ []));
1990
1996
  hostClasses = computed(() => cn(this.isHorizontal()
1991
1997
  ? '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 */ []));
1998
+ : '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
1999
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiNavFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1994
2000
  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
2001
  <div class="flex h-full items-center">
@@ -2031,7 +2037,7 @@ class UiNavHeaderComponent {
2031
2037
  contentClasses = computed(() => (this.isHorizontal() ? 'min-w-0' : 'min-w-0 flex-1'), ...(ngDevMode ? [{ debugName: "contentClasses" }] : /* istanbul ignore next */ []));
2032
2038
  hostClasses = computed(() => cn(this.isHorizontal()
2033
2039
  ? '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 */ []));
2040
+ : '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
2041
  toggleCollapsed() {
2036
2042
  this.shell.toggleCollapsed();
2037
2043
  }
@@ -2104,7 +2110,7 @@ class UiNavMainComponent {
2104
2110
  orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
2105
2111
  hostClasses = computed(() => cn('min-h-0 flex-1', this.orientation() === 'horizontal'
2106
2112
  ? '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 */ []));
2113
+ : 'block overflow-y-auto overflow-x-hidden', this.class()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
2108
2114
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: UiNavMainComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2109
2115
  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
2116
  }
@@ -2180,8 +2186,8 @@ class UiNavComponent {
2180
2186
  : 'flex-col overflow-hidden', this.resolvedState().position === 'right' ? 'origin-right' : 'origin-left', this.previewRailExpanded() && [
2181
2187
  'absolute inset-y-0 z-20 w-76 overflow-hidden bg-background shadow-xl',
2182
2188
  this.resolvedState().position === 'right'
2183
- ? 'right-0 border-l border-border/70'
2184
- : 'left-0 border-r border-border/70',
2189
+ ? 'right-0 border-l border-[hsl(var(--border)/var(--opacity-70))]'
2190
+ : 'left-0 border-r border-[hsl(var(--border)/var(--opacity-70))]',
2185
2191
  ]), ...(ngDevMode ? [{ debugName: "shellClasses" }] : /* istanbul ignore next */ []));
2186
2192
  state = this.resolvedState;
2187
2193
  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'