@rxap/layout 16.0.0-dev.3 → 16.0.0-dev.30

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 (53) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/LICENSE +621 -0
  3. package/LICENSE.md +621 -0
  4. package/README.md +1 -1
  5. package/esm2022/index.mjs +2 -6
  6. package/esm2022/lib/app-url.service.mjs +66 -0
  7. package/esm2022/lib/header/apps-button/apps-button.component.mjs +29 -46
  8. package/esm2022/lib/header/header.component.mjs +48 -52
  9. package/esm2022/lib/header/language-selector/language-selector.component.mjs +13 -72
  10. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +6 -2
  11. package/esm2022/lib/header/reset-button/reset-button.component.mjs +3 -3
  12. package/esm2022/lib/header/settings-button/settings-button.component.mjs +52 -0
  13. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +20 -18
  14. package/esm2022/lib/header/sign-out/sign-out.component.mjs +14 -18
  15. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +31 -28
  16. package/esm2022/lib/layout/layout.component.mjs +50 -23
  17. package/esm2022/lib/layout/layout.component.service.mjs +50 -15
  18. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +50 -102
  19. package/esm2022/lib/navigation/navigation.component.mjs +26 -31
  20. package/esm2022/lib/sidenav/sidenav.component.mjs +3 -3
  21. package/esm2022/lib/sidenav/version/version.component.mjs +2 -8
  22. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +3 -3
  23. package/esm2022/lib/types.mjs +1 -1
  24. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +6 -7
  25. package/fesm2022/rxap-layout.mjs +648 -699
  26. package/fesm2022/rxap-layout.mjs.map +1 -1
  27. package/index.d.ts +1 -3
  28. package/lib/app-url.service.d.ts +26 -0
  29. package/lib/header/apps-button/apps-button.component.d.ts +12 -20
  30. package/lib/header/header.component.d.ts +10 -13
  31. package/lib/header/language-selector/language-selector.component.d.ts +1 -16
  32. package/lib/header/settings-button/settings-button.component.d.ts +22 -0
  33. package/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +6 -3
  34. package/lib/header/sign-out/sign-out.component.d.ts +4 -4
  35. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +13 -9
  36. package/lib/layout/layout.component.d.ts +16 -4
  37. package/lib/layout/layout.component.service.d.ts +10 -5
  38. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -17
  39. package/lib/navigation/navigation.component.d.ts +5 -5
  40. package/lib/types.d.ts +3 -2
  41. package/package.json +95 -47
  42. package/theme.css +1 -0
  43. package/esm2022/lib/layout/layout.component.module.mjs +0 -30
  44. package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +0 -27
  45. package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +0 -36
  46. package/lib/layout/layout.component.module.d.ts +0 -10
  47. package/lib/sidenav-content/sidenav-content.component.d.ts +0 -10
  48. package/lib/sidenav-content/sidenav-content.component.service.d.ts +0 -15
  49. package/src/lib/header/apps-button/_apps-button.component.theme.scss +0 -45
  50. package/src/lib/navigation/_navigation.component.theme.scss +0 -33
  51. package/src/lib/navigation/navigation-item/_navigation-item.component.theme.scss +0 -45
  52. package/src/lib/sidenav/_sidenav.component.theme.scss +0 -65
  53. package/src/lib/toggle-window-sidenav-button/_toggle-window-sidenav-button.component.theme.scss +0 -15
package/index.d.ts CHANGED
@@ -7,7 +7,6 @@ export * from './lib/header/reset-button/reset-button.component';
7
7
  export * from './lib/header/sidenav-toggle-button/sidenav-toggle-button.component';
8
8
  export * from './lib/header/navigation-progress-bar/navigation-progress-bar.component';
9
9
  export * from './lib/header/apps-button/apps-button.component';
10
- export * from './lib/layout/layout.component.module';
11
10
  export * from './lib/layout/layout.component';
12
11
  export * from './lib/layout/layout.component.service';
13
12
  export * from './lib/navigation/navigation-item';
@@ -20,9 +19,8 @@ export * from './lib/sidenav/sidenav-header.directive';
20
19
  export * from './lib/sidenav/sidenav-footer.directive';
21
20
  export * from './lib/sidenav/sidenav.component.service';
22
21
  export * from './lib/sidenav/version/version.component';
23
- export * from './lib/sidenav-content/sidenav-content.component.service';
24
- export * from './lib/sidenav-content/sidenav-content.component';
25
22
  export * from './lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component';
26
23
  export * from './lib/window-container-sidenav/window-container-sidenav.component';
27
24
  export * from './lib/footer.directive';
28
25
  export * from './lib/types';
26
+ export * from './lib/app-url.service';
@@ -0,0 +1,26 @@
1
+ import { AuthorizationService } from '@rxap/authorization';
2
+ import { ConfigService } from '@rxap/config';
3
+ import * as i0 from "@angular/core";
4
+ export interface ExternalApps {
5
+ image?: string;
6
+ label: string;
7
+ href: string;
8
+ empty?: false;
9
+ hidden?: boolean;
10
+ id?: string;
11
+ permissions: string[];
12
+ }
13
+ export declare class AppUrlService {
14
+ private readonly config;
15
+ private readonly localeId;
16
+ private readonly authorizationService;
17
+ private _apps;
18
+ constructor(config: ConfigService, localeId: string, authorizationService: AuthorizationService);
19
+ getApp(appId: string): ExternalApps | null;
20
+ getAppUrl(appId: string, path: string): string | null;
21
+ navigate(appId: string, path: string): void;
22
+ getAppList(): Promise<Array<ExternalApps>>;
23
+ private getPathPrefix;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppUrlService, never>;
25
+ static ɵprov: i0.ɵɵInjectableDeclaration<AppUrlService>;
26
+ }
@@ -1,24 +1,16 @@
1
- import { ConfigService } from '@rxap/config';
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import { AppUrlService, ExternalApps } from '../../app-url.service';
3
+ import { RxapAuthenticationService } from '@rxap/authentication';
2
4
  import * as i0 from "@angular/core";
3
- export interface AppsButtonGridItem {
4
- image: string;
5
- label: string;
6
- href: string;
7
- empty?: false;
8
- }
9
- export interface EmptyAppsButtonGridItem {
10
- empty: true;
11
- href?: undefined;
12
- label?: undefined;
13
- image?: undefined;
14
- }
15
- export declare class AppsButtonComponent {
16
- private readonly config;
17
- get gridWithPadding(): Array<AppsButtonGridItem | EmptyAppsButtonGridItem>;
18
- get columns(): 1 | 2 | 3;
5
+ export declare class AppsButtonComponent implements OnInit, OnDestroy {
6
+ private readonly appUrlService;
7
+ private readonly authenticationService;
19
8
  isOpen: boolean;
20
- grid: Array<AppsButtonGridItem>;
21
- constructor(grid: any, config: ConfigService);
22
- static ɵfac: i0.ɵɵFactoryDeclaration<AppsButtonComponent, [{ optional: true; }, null]>;
9
+ readonly appList: import("@angular/core").WritableSignal<ExternalApps[]>;
10
+ private _subscription?;
11
+ constructor(grid: any, appUrlService: AppUrlService, authenticationService: RxapAuthenticationService);
12
+ ngOnInit(): void;
13
+ ngOnDestroy(): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppsButtonComponent, [{ optional: true; }, null, null]>;
23
15
  static ɵcmp: i0.ɵɵComponentDeclaration<AppsButtonComponent, "rxap-apps-button", never, {}, {}, never, never, true, never>;
24
16
  }
@@ -1,26 +1,23 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
2
- import { Constructor } from '@rxap/utilities';
3
- import { Observable, Subscription } from 'rxjs';
4
- import { MatSidenav } from '@angular/material/sidenav';
5
- import { UserService } from '@rxap/authentication';
6
- import { HeaderService } from '@rxap/services';
7
- import { MatMenuPanel } from '@angular/material/menu';
1
+ import { OnDestroy, OnInit, Signal } from '@angular/core';
8
2
  import { ThemePalette } from '@angular/material/core';
3
+ import { HeaderService } from '@rxap/services';
4
+ import { Constructor } from '@rxap/utilities';
5
+ import { Subscription } from 'rxjs';
6
+ import { LayoutComponentService } from '../layout/layout.component.service';
9
7
  import * as i0 from "@angular/core";
10
8
  export declare class HeaderComponent implements OnInit, OnDestroy {
11
9
  readonly headerComponentService: HeaderService;
12
- private readonly userService;
10
+ readonly layoutComponentService: LayoutComponentService;
13
11
  headerComponent: any;
14
- sidenav?: MatSidenav;
15
12
  components: Array<Constructor<any>>;
16
13
  subscriptions: Subscription;
17
- hasUser$: Observable<boolean>;
18
14
  color: ThemePalette;
19
- settingsMenuPanel?: MatMenuPanel;
20
- constructor(headerComponentService: HeaderService, userService: UserService<any>, headerComponent: any);
15
+ readonly collapsable: Signal<boolean>;
16
+ readonly opened: Signal<boolean>;
17
+ constructor(headerComponentService: HeaderService, layoutComponentService: LayoutComponentService, headerComponent: any);
21
18
  ngOnInit(): void;
22
19
  updateComponents(): void;
23
20
  ngOnDestroy(): void;
24
21
  static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, [null, null, { optional: true; }]>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "rxap-header", never, { "sidenav": { "alias": "sidenav"; "required": false; }; "color": { "alias": "color"; "required": false; }; "settingsMenuPanel": { "alias": "settingsMenuPanel"; "required": false; }; }, {}, never, ["*"], true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "rxap-header", never, { "color": { "alias": "color"; "required": false; }; }, {}, never, ["*"], true, never>;
26
23
  }
@@ -1,20 +1,5 @@
1
- import { ConfigService } from '@rxap/config';
1
+ import { LanguageSelectorService } from '@rxap/ngx-localize';
2
2
  import * as i0 from "@angular/core";
3
- export declare const RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY = "rxap__selected_language";
4
- export declare const RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY = "rxap__selected_language_last_change";
5
- export declare class LanguageSelectorService {
6
- private readonly config;
7
- readonly languages: any;
8
- readonly defaultLanguage: string;
9
- selectedLanguage: string;
10
- constructor(config: ConfigService);
11
- setLanguage(language: string): void;
12
- autoRedirect(): void;
13
- private redirect;
14
- private checkLastChange;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<LanguageSelectorService, never>;
16
- static ɵprov: i0.ɵɵInjectableDeclaration<LanguageSelectorService>;
17
- }
18
3
  export declare class LanguageSelectorComponent {
19
4
  readonly language: LanguageSelectorService;
20
5
  constructor(language: LanguageSelectorService);
@@ -0,0 +1,22 @@
1
+ import { ComponentPortal } from '@angular/cdk/portal';
2
+ import { Injector, OnDestroy, OnInit } from '@angular/core';
3
+ import { ActivatedRoute } from '@angular/router';
4
+ import { ChangelogService } from '@rxap/ngx-changelog';
5
+ import { ThemeService } from '@rxap/services';
6
+ import * as i0 from "@angular/core";
7
+ export declare class SettingsButtonComponent implements OnInit, OnDestroy {
8
+ readonly theme: ThemeService;
9
+ private readonly route;
10
+ private readonly injector;
11
+ private readonly changelogService;
12
+ isDevMode: boolean;
13
+ items: import("@angular/core").WritableSignal<ComponentPortal<unknown>[]>;
14
+ private _subscription?;
15
+ constructor(theme: ThemeService, route: ActivatedRoute, injector: Injector, changelogService: ChangelogService);
16
+ ngOnDestroy(): void;
17
+ ngOnInit(): void;
18
+ private getCustomMenuItems;
19
+ openChangelogDialog(): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<SettingsButtonComponent, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<SettingsButtonComponent, "rxap-settings-button", never, {}, {}, never, never, true, never>;
22
+ }
@@ -1,7 +1,10 @@
1
- import { MatSidenav } from '@angular/material/sidenav';
1
+ import { Signal } from '@angular/core';
2
+ import { LayoutComponentService } from '../../layout/layout.component.service';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class SidenavToggleButtonComponent {
4
- sidenav: MatSidenav;
5
+ readonly layoutComponentService: LayoutComponentService;
6
+ readonly opened: Signal<boolean>;
7
+ constructor(layoutComponentService: LayoutComponentService);
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SidenavToggleButtonComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<SidenavToggleButtonComponent, "rxap-sidenav-toggle-button", never, { "sidenav": { "alias": "sidenav"; "required": false; }; }, {}, never, never, true, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidenavToggleButtonComponent, "rxap-sidenav-toggle-button", never, {}, {}, never, never, true, never>;
7
10
  }
@@ -1,9 +1,9 @@
1
- import { Router } from '@angular/router';
1
+ import { RxapAuthenticationService } from '@rxap/authentication';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SignOutComponent {
4
- private readonly router;
5
- constructor(router: Router);
6
- redirectToRoot(): void;
4
+ private readonly authenticationService;
5
+ constructor(authenticationService: RxapAuthenticationService);
6
+ logout(): Promise<void>;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<SignOutComponent, never>;
8
8
  static ɵcmp: i0.ɵɵComponentDeclaration<SignOutComponent, "rxap-sign-out", never, {}, {}, never, never, true, never>;
9
9
  }
@@ -1,11 +1,15 @@
1
- import { Observable } from 'rxjs';
2
- import { UserService } from '@rxap/authentication';
1
+ import { InjectionToken, Signal } from '@angular/core';
2
+ import { RxapAuthenticationService } from '@rxap/authentication';
3
+ import { UserProfileDataSource } from '@rxap/ngx-user';
3
4
  import * as i0 from "@angular/core";
4
- export declare class UserProfileIconComponent {
5
- userService: UserService;
6
- userProfileUrl$: Observable<string | undefined>;
7
- userName$: Observable<string>;
8
- constructor(userService: UserService);
9
- static ɵfac: i0.ɵɵFactoryDeclaration<UserProfileIconComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<UserProfileIconComponent, "rxap-user-profile-icon", never, {}, {}, never, never, true, never>;
5
+ export type ExtractUsernameFromProfileFn<T = unknown> = (profile: T) => string | null;
6
+ export declare const EXTRACT_USERNAME_FROM_PROFILE: InjectionToken<ExtractUsernameFromProfileFn<unknown>>;
7
+ export declare class UserProfileIconComponent<T = unknown> {
8
+ private readonly userProfileService;
9
+ private readonly authenticationService;
10
+ username: Signal<string | null>;
11
+ constructor(userProfileService: UserProfileDataSource<T>, authenticationService: RxapAuthenticationService, extractUsernameFromProfile: ExtractUsernameFromProfileFn<T>);
12
+ logout(): Promise<void>;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserProfileIconComponent<any>, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<UserProfileIconComponent<any>, "rxap-user-profile-icon", never, {}, {}, never, never, true, never>;
11
15
  }
@@ -1,11 +1,23 @@
1
+ import { Signal } from '@angular/core';
2
+ import { MatDrawerMode, MatSidenav } from '@angular/material/sidenav';
3
+ import { Environment } from '@rxap/environment';
4
+ import { IconLoaderService } from '@rxap/icon';
1
5
  import { LayoutComponentService } from './layout.component.service';
2
- import { MatSidenav } from '@angular/material/sidenav';
3
6
  import * as i0 from "@angular/core";
4
7
  export declare class LayoutComponent {
5
8
  readonly layoutComponentService: LayoutComponentService;
6
- openWindowSidenav: boolean;
9
+ private readonly environment;
10
+ readonly sidenavMode: Signal<MatDrawerMode>;
11
+ readonly fixedBottomGap: Signal<number>;
12
+ readonly fixedTopGap: Signal<number>;
13
+ readonly pinned: Signal<boolean>;
14
+ readonly collapsable: Signal<boolean>;
15
+ readonly logoSrc: string;
16
+ readonly logoWidth: number;
17
+ readonly release: string;
18
+ readonly opened: Signal<boolean>;
7
19
  sidenav: MatSidenav;
8
- constructor(layoutComponentService: LayoutComponentService);
20
+ constructor(layoutComponentService: LayoutComponentService, environment: Environment, iconLoaderService: IconLoaderService);
9
21
  static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<LayoutComponent, "rxap-layout", never, {}, {}, never, ["*"], true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<LayoutComponent, "rxap-layout", never, {}, {}, never, never, true, never>;
11
23
  }
@@ -1,8 +1,9 @@
1
- import { BehaviorSubject, Observable } from 'rxjs';
1
+ import { MediaMatcher } from '@angular/cdk/layout';
2
+ import { MatDrawerMode } from '@angular/material/sidenav';
3
+ import { ConfigService } from '@rxap/config';
2
4
  import { FooterService, HeaderService } from '@rxap/services';
5
+ import { BehaviorSubject, Observable } from 'rxjs';
3
6
  import { LogoConfig } from '../types';
4
- import { ConfigService } from '@rxap/config';
5
- import { MatDrawerMode } from '@angular/material/sidenav';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class LayoutComponentService {
8
9
  readonly footerComponentService: FooterService;
@@ -10,10 +11,14 @@ export declare class LayoutComponentService {
10
11
  private readonly config;
11
12
  opened$: BehaviorSubject<boolean>;
12
13
  mode$: BehaviorSubject<MatDrawerMode>;
14
+ pinned$: BehaviorSubject<boolean>;
13
15
  fixedBottomGap$: Observable<number>;
14
16
  fixedTopGap$: BehaviorSubject<number>;
15
17
  logo: LogoConfig;
16
- constructor(footerComponentService: FooterService, headerComponentService: HeaderService, logoConfig: LogoConfig | null | undefined, config: ConfigService);
17
- static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponentService, [null, null, { optional: true; }, null]>;
18
+ collapsable$: BehaviorSubject<boolean>;
19
+ constructor(footerComponentService: FooterService, headerComponentService: HeaderService, logoConfig: LogoConfig | null | undefined, config: ConfigService, mediaMatcher: MediaMatcher);
20
+ toggleOpend(): void;
21
+ togglePinned(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponentService, [null, null, { optional: true; }, null, null]>;
18
23
  static ɵprov: i0.ɵɵInjectableDeclaration<LayoutComponentService>;
19
24
  }
@@ -1,39 +1,32 @@
1
- import { AfterViewInit, ElementRef, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, ViewContainerRef } from '@angular/core';
2
- import { Navigation, NavigationDividerItem, NavigationItem } from '../navigation-item';
1
+ import { ElementRef, OnChanges, OnDestroy, Renderer2, SimpleChanges, ViewContainerRef } from '@angular/core';
3
2
  import { Router, RouterLinkActive } from '@angular/router';
4
- import { SidenavComponentService } from '../../sidenav/sidenav.component.service';
5
3
  import { Overlay } from '@angular/cdk/overlay';
4
+ import { SidenavComponentService } from '../../sidenav/sidenav.component.service';
5
+ import { Navigation, NavigationDividerItem, NavigationItem } from '../navigation-item';
6
6
  import * as i0 from "@angular/core";
7
- export declare class NavigationItemComponent implements OnChanges, AfterViewInit, OnDestroy, OnInit {
7
+ export declare class NavigationItemComponent implements OnChanges, OnDestroy {
8
8
  private readonly router;
9
9
  readonly sidenav: SidenavComponentService;
10
10
  private readonly elementRef;
11
11
  private readonly renderer;
12
12
  private readonly overlay;
13
13
  private readonly viewContainerRef;
14
+ level: number;
15
+ private _isActive;
14
16
  children: Navigation | null;
15
17
  routerLinkActive: RouterLinkActive;
16
18
  item: NavigationItem;
17
- level: number;
18
- isActive: boolean;
19
- private _navigationOverlay;
19
+ active: import("@angular/core").WritableSignal<boolean>;
20
+ get isActive(): boolean;
21
+ set isActive(value: boolean);
20
22
  private readonly _subscription;
21
- private _overlayRef?;
22
- private _embeddedViewRef?;
23
- /**
24
- * indicates the mouse is over the
25
- */
26
- lockeOverlay: boolean;
27
23
  constructor(router: Router, sidenav: SidenavComponentService, elementRef: ElementRef, renderer: Renderer2, overlay: Overlay, viewContainerRef: ViewContainerRef);
28
24
  ngOnChanges(changes: SimpleChanges): void;
29
25
  ngAfterViewInit(): void;
30
- ngOnInit(): void;
31
26
  ngOnDestroy(): void;
32
- onMouseenter(): void;
33
- onMouseleave(): void;
34
27
  isNavigationDividerItem(item: NavigationItem | NavigationDividerItem): item is NavigationDividerItem;
35
28
  isNavigationItem(item: NavigationItem | NavigationDividerItem): item is NavigationItem;
36
29
  asNavigationItem(item: NavigationItem | NavigationDividerItem): NavigationItem;
37
30
  static ɵfac: i0.ɵɵFactoryDeclaration<NavigationItemComponent, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<NavigationItemComponent, "li[rxap-navigation-item]", never, { "item": { "alias": "item"; "required": false; }; "level": { "alias": "level"; "required": false; }; }, {}, never, never, true, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationItemComponent, "li[rxap-navigation-item]", never, { "level": { "alias": "level"; "required": false; }; "item": { "alias": "item"; "required": true; }; }, {}, never, never, true, never>;
39
32
  }
@@ -1,24 +1,24 @@
1
1
  import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
- import { Navigation, NavigationDividerItem, NavigationItem } from './navigation-item';
3
- import { NavigationService } from './navigation.service';
4
2
  import { Subscription } from 'rxjs';
5
3
  import { SidenavComponentService } from '../sidenav/sidenav.component.service';
4
+ import { Navigation, NavigationDividerItem, NavigationItem } from './navigation-item';
5
+ import { NavigationService } from './navigation.service';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class NavigationComponent implements OnInit, OnDestroy {
8
8
  private readonly navigationService;
9
9
  private readonly cdr;
10
10
  readonly sidenav: SidenavComponentService;
11
- _root: boolean;
12
- set root(value: boolean | '');
13
11
  items: Navigation;
14
12
  subscription?: Subscription;
15
13
  level: number;
16
14
  constructor(navigationService: NavigationService, cdr: ChangeDetectorRef, sidenav: SidenavComponentService);
15
+ _root: boolean;
16
+ set root(value: boolean | '');
17
17
  ngOnInit(): void;
18
18
  ngOnDestroy(): void;
19
19
  isNavigationDividerItem(item: NavigationItem | NavigationDividerItem): item is NavigationDividerItem;
20
20
  isNavigationItem(item: NavigationItem | NavigationDividerItem): item is NavigationItem;
21
21
  asNavigationItem(item: NavigationItem | NavigationDividerItem): NavigationItem;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<NavigationComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<NavigationComponent, "ul[rxap-navigation]", never, { "root": { "alias": "root"; "required": false; }; "items": { "alias": "items"; "required": false; }; "level": { "alias": "level"; "required": false; }; }, {}, never, never, true, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationComponent, "ul[rxap-navigation]", never, { "items": { "alias": "items"; "required": false; }; "level": { "alias": "level"; "required": false; }; "root": { "alias": "root"; "required": false; }; }, {}, never, never, true, never>;
24
24
  }
package/lib/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export interface LogoConfig {
2
- src: string;
3
- width: string;
2
+ src?: string;
3
+ width?: number;
4
+ height?: number;
4
5
  }
package/package.json CHANGED
@@ -1,71 +1,107 @@
1
1
  {
2
+ "version": "16.0.0-dev.30",
2
3
  "name": "@rxap/layout",
3
- "version": "16.0.0-dev.3",
4
+ "license": "GPL-3.0-or-later",
5
+ "dependencies": {
6
+ "tslib": "2.6.2"
7
+ },
4
8
  "peerDependencies": {
5
- "@angular/animations": "^16.0.0",
6
- "@angular/cdk": "^16.0.0",
7
- "@angular/common": "^16.0.0",
8
- "@angular/core": "^16.0.0",
9
+ "@angular/animations": "^16.1.4",
10
+ "@angular/cdk": "^16.1.4",
11
+ "@angular/common": "^16.1.4",
12
+ "@angular/core": "^16.1.4",
9
13
  "@angular/flex-layout": "^15.0.0-beta.42",
10
- "@angular/forms": "^16.0.0",
11
- "@angular/material": "^16.0.0",
12
- "@angular/router": "^16.0.0",
13
- "@rxap/authentication": "^16.0.0-dev.3",
14
- "@rxap/config": "^16.0.0-dev.3",
15
- "@rxap/directives": "^16.0.0-dev.3",
16
- "@rxap/material-directives": "^16.0.0-dev.3",
17
- "@rxap/rxjs": "^1.0.1-dev.0",
18
- "@rxap/services": "^16.0.0-dev.3",
19
- "@rxap/utilities": "^16.0.0-dev.2",
14
+ "@angular/forms": "^16.1.4",
15
+ "@angular/material": "^16.1.4",
16
+ "@angular/router": "^16.1.4",
17
+ "@rxap/authentication": "^16.0.0-dev.15",
18
+ "@rxap/authorization": "^16.0.0-dev.20",
19
+ "@rxap/browser-utilities": "^0.0.2-dev.8",
20
+ "@rxap/config": "^16.0.0-dev.16",
21
+ "@rxap/data-source": "^16.0.0-dev.18",
22
+ "@rxap/directives": "^16.0.0-dev.15",
23
+ "@rxap/environment": "^16.0.0-dev.15",
24
+ "@rxap/icon": "^16.0.0-dev.15",
25
+ "@rxap/material-directives": "^16.0.0-dev.17",
26
+ "@rxap/ngx-changelog": "^16.1.0-dev.1",
27
+ "@rxap/ngx-localize": "^16.1.0-dev.0",
28
+ "@rxap/ngx-status-check": "^16.1.0-dev.12",
29
+ "@rxap/ngx-user": "^16.1.0-dev.1",
30
+ "@rxap/services": "^16.0.0-dev.15",
31
+ "@rxap/utilities": "^16.0.0-dev.18",
20
32
  "rxjs": "^7.8.0",
21
- "workspace": "1.0.0",
22
- "@angular/localize": "16.1.4"
23
- },
24
- "sideEffects": false,
25
- "dependencies": {
26
- "tslib": "2.5.3"
33
+ "@faker-js/faker": "8.0.2"
27
34
  },
28
- "publishConfig": {
29
- "access": "public",
30
- "directory": "../../../dist/packages/angular/layout"
35
+ "author": {
36
+ "name": "Merzough Münker",
37
+ "email": "mmuenker@digitaix.com"
31
38
  },
32
- "keywords": [
33
- "rxap",
34
- "angular",
35
- "ngx"
36
- ],
37
- "homepage": "https:/gitlab.com/rxap/packages/packages/angular/layout",
38
39
  "bugs": {
39
40
  "url": "https://gitlab.com/rxap/packages/-/issues",
40
41
  "email": "incoming+rxap-packages-14898188-issue-@incoming.gitlab.com"
41
42
  },
42
- "license": "GPL-3.0-or-later",
43
- "repository": {
44
- "type": "git",
45
- "url": "https://gitlab.com/rxap/packages.git",
46
- "directory": "packages/angular/layout"
47
- },
48
- "author": {
49
- "name": "Merzough Münker",
50
- "email": "mmuenker@digitaix.com"
51
- },
43
+ "homepage": "https:/gitlab.com/rxap/packages/packages/angular/layout",
44
+ "keywords": [
45
+ "angular",
46
+ "angular-layout",
47
+ "layout",
48
+ "ngx",
49
+ "packages",
50
+ "rxap"
51
+ ],
52
52
  "nx-migrations": {
53
53
  "packageGroup": [
54
54
  {
55
55
  "package": "@rxap/authentication",
56
- "version": "16.0.0-dev.3"
56
+ "version": "16.0.0-dev.15"
57
+ },
58
+ {
59
+ "package": "@rxap/authorization",
60
+ "version": "16.0.0-dev.20"
61
+ },
62
+ {
63
+ "package": "@rxap/browser-utilities",
64
+ "version": "0.0.2-dev.8"
57
65
  },
58
66
  {
59
67
  "package": "@rxap/config",
60
- "version": "16.0.0-dev.3"
68
+ "version": "16.0.0-dev.16"
69
+ },
70
+ {
71
+ "package": "@rxap/data-source",
72
+ "version": "16.0.0-dev.18"
61
73
  },
62
74
  {
63
75
  "package": "@rxap/directives",
64
- "version": "16.0.0-dev.3"
76
+ "version": "16.0.0-dev.15"
77
+ },
78
+ {
79
+ "package": "@rxap/environment",
80
+ "version": "16.0.0-dev.15"
81
+ },
82
+ {
83
+ "package": "@rxap/icon",
84
+ "version": "16.0.0-dev.15"
65
85
  },
66
86
  {
67
87
  "package": "@rxap/material-directives",
68
- "version": "16.0.0-dev.3"
88
+ "version": "16.0.0-dev.17"
89
+ },
90
+ {
91
+ "package": "@rxap/ngx-changelog",
92
+ "version": "16.1.0-dev.1"
93
+ },
94
+ {
95
+ "package": "@rxap/ngx-localize",
96
+ "version": "16.1.0-dev.0"
97
+ },
98
+ {
99
+ "package": "@rxap/ngx-status-check",
100
+ "version": "16.1.0-dev.12"
101
+ },
102
+ {
103
+ "package": "@rxap/ngx-user",
104
+ "version": "16.1.0-dev.1"
69
105
  },
70
106
  {
71
107
  "package": "@rxap/rxjs",
@@ -73,14 +109,25 @@
73
109
  },
74
110
  {
75
111
  "package": "@rxap/services",
76
- "version": "16.0.0-dev.3"
112
+ "version": "16.0.0-dev.15"
77
113
  },
78
114
  {
79
115
  "package": "@rxap/utilities",
80
- "version": "16.0.0-dev.2"
116
+ "version": "16.0.0-dev.18"
81
117
  }
82
118
  ]
83
119
  },
120
+ "publishConfig": {
121
+ "access": "public",
122
+ "directory": "../../../dist/packages/angular/layout"
123
+ },
124
+ "repository": {
125
+ "type": "git",
126
+ "url": "https://gitlab.com/rxap/packages.git",
127
+ "directory": "packages/angular/layout"
128
+ },
129
+ "sideEffects": false,
130
+ "gitHead": "43ff53dd3025eed5389c5e02ccd7ab7ce004080d",
84
131
  "module": "fesm2022/rxap-layout.mjs",
85
132
  "typings": "index.d.ts",
86
133
  "exports": {
@@ -92,6 +139,7 @@
92
139
  "esm2022": "./esm2022/rxap-layout.mjs",
93
140
  "esm": "./esm2022/rxap-layout.mjs",
94
141
  "default": "./fesm2022/rxap-layout.mjs"
95
- }
142
+ },
143
+ "./theme": "./theme.css"
96
144
  }
97
145
  }
package/theme.css ADDED
@@ -0,0 +1 @@
1
+ .container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:initial}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.right-0{right:0}.top-0{top:0}.z-10{z-index:10}.z-50{z-index:50}.m-8{margin:2rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-32{margin-bottom:8rem}.mb-4{margin-bottom:1rem}.ml-16{margin-left:4rem}.ml-2{margin-left:.5rem}.mt-16{margin-top:4rem}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-3{width:.75rem}.w-96{width:24rem}.w-full{width:100%}.min-w-full{min-width:100%}.\!max-w-none{max-width:none!important}.max-w-6xl{max-width:72rem}.grow{flex-grow:1}.grow-0{flex-grow:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-stretch{justify-items:stretch}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-5{row-gap:1.25rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-accent-600{border-color:var(--accent-600)}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-primary-500{background-color:var(--primary-500)}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-900{background-color:rgb(127 29 29/var(--tw-bg-opacity))}.bg-red-900,.bg-white{--tw-bg-opacity:1}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-16{padding-left:4rem;padding-right:4rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pl-0{padding-left:0}.pl-12{padding-left:3rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-5{padding-right:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.text-accent-400{color:var(--accent-400)}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.drop-shadow-2xl{--tw-drop-shadow:drop-shadow(0 25px 25px #00000026)}.drop-shadow-2xl,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-colors{transition-duration:.15s}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}:is(.dark .dark\:bg-black){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-900){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:is(.dark .dark\:bg-red-900){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:is(.dark .dark\:bg-yellow-900){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}:is(.dark .dark\:text-green-300){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}:is(.dark .dark\:text-neutral-400){--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}:is(.dark .dark\:text-red-300){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-yellow-300){--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}:is(.dark .dark\:hover\:bg-gray-900:hover){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-white:hover){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media (min-width:768px){.md\:w-1\/2{width:50%}}