@unopsitg/ux 21.0.5 → 21.0.20

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/README.md +15 -0
  2. package/assets/_card.scss +89 -2
  3. package/assets/_config.scss +3 -3
  4. package/assets/_content.scss +39 -5
  5. package/assets/_footer.scss +59 -3
  6. package/assets/_main.scss +6 -8
  7. package/assets/_responsive.scss +15 -3
  8. package/assets/_sass_variables.scss +8 -2
  9. package/assets/_search.scss +3 -3
  10. package/assets/_tabs.scss +44 -0
  11. package/assets/_tags.scss +1 -1
  12. package/assets/_topbar.scss +45 -17
  13. package/assets/_utils.scss +0 -12
  14. package/assets/layout.scss +1 -0
  15. package/assets/sidebar/_sidebar_compact.scss +1 -6
  16. package/assets/sidebar/_sidebar_horizontal.scss +97 -76
  17. package/assets/sidebar/_sidebar_slim.scss +1 -6
  18. package/assets/sidebar/_sidebar_theme_core.scss +19 -19
  19. package/assets/sidebar/themes/_dark.scss +5 -5
  20. package/assets/sidebar/themes/_light.scss +2 -2
  21. package/assets/sidebar/themes/_primary.scss +8 -8
  22. package/assets/tailwind.css +47 -18
  23. package/assets/variables/_common.scss +1 -0
  24. package/assets/variables/_light.scss +2 -2
  25. package/fesm2022/unopsitg-ux.mjs +1532 -574
  26. package/fesm2022/unopsitg-ux.mjs.map +1 -1
  27. package/package.json +1 -1
  28. package/types/unopsitg-ux.d.ts +211 -203
  29. package/assets/opp/AppLogo/AppLogo-onDark_V.svg +0 -55
  30. package/assets/opp/AppLogo/AppLogo-onLight_V.svg +0 -55
  31. package/assets/opp/AppLogo-dark-vertical.svg +0 -55
  32. package/assets/opp/drive-download-20260421T141232Z-3-001.zip +0 -0
  33. package/assets/opp/favicon/favicon.svg +0 -17
  34. package/assets/opp/logo-dark-horizontal.svg +0 -55
  35. package/assets/opp/logo-light-horizontal.svg +0 -55
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unopsitg/ux",
3
- "version": "21.0.5",
3
+ "version": "21.0.20",
4
4
  "description": "UNOPS Angular 21 layout shell, brand theme (PrimeNG / PrimeUIX), and shared types",
5
5
  "keywords": [
6
6
  "angular",
@@ -1,10 +1,13 @@
1
1
  import * as _primeuix_themes_types from '@primeuix/themes/types';
2
2
  import * as _angular_core from '@angular/core';
3
- import { InjectionToken, OnInit, OnDestroy, ElementRef, AfterViewChecked, AfterViewInit, TemplateRef, QueryList } from '@angular/core';
3
+ import { InjectionToken, TemplateRef, OnInit, OnDestroy, ElementRef, AfterViewChecked, AfterViewInit, QueryList, OnChanges, SimpleChanges } from '@angular/core';
4
4
  import { QueryParamsHandling, IsActiveMatchOptions, Router } from '@angular/router';
5
5
  import * as _unopsitg_ux from '@unopsitg/ux';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { PrimeNG } from 'primeng/config';
8
+ import { MenuItem as MenuItem$1 } from 'primeng/api';
9
+ import { Menu } from 'primeng/menu';
10
+ import { AutoCompleteCompleteEvent } from 'primeng/autocomplete';
8
11
 
9
12
  /**
10
13
  * Brand theme presets built on top of PrimeUIX base presets.
@@ -16,30 +19,30 @@ import { PrimeNG } from 'primeng/config';
16
19
  */
17
20
  declare const brandPrimitives: {
18
21
  readonly deepsea: {
19
- readonly 50: "#F1F5F9";
20
- readonly 100: "#E2E8F0";
21
- readonly 200: "#CBD5E1";
22
- readonly 300: "#94A3B8";
23
- readonly 400: "#64748B";
24
- readonly 500: "#475569";
25
- readonly 600: "#334155";
26
- readonly 700: "#1E293B";
27
- readonly 800: "#0F172A";
28
- readonly 900: "#0A101D";
22
+ readonly 50: "#c3c7cb";
23
+ readonly 100: "#9ea5ac";
24
+ readonly 200: "#7a838d";
25
+ readonly 300: "#56626d";
26
+ readonly 400: "#31404e";
27
+ readonly 500: "#0d1e2f";
28
+ readonly 600: "#0b1a28";
29
+ readonly 700: "#091521";
30
+ readonly 800: "#07111a";
31
+ readonly 900: "#050c13";
29
32
  readonly 950: "#03080c";
30
33
  };
31
34
  readonly gray: {
32
- readonly 50: "#f0f3f4";
33
- readonly 100: "#ECF0F5";
34
- readonly 200: "#d8dadf";
35
- readonly 300: "#b9bac1";
36
- readonly 400: "#858c99";
37
- readonly 500: "#808393";
38
- readonly 600: "#808284";
39
- readonly 700: "#6a6b6d";
40
- readonly 800: "#535455";
41
- readonly 900: "#3c3d3e";
42
- readonly 950: "#262627";
35
+ readonly 50: "#f8fafc";
36
+ readonly 100: "#f1f5f9";
37
+ readonly 200: "#e2e8f0";
38
+ readonly 300: "#cbd5e1";
39
+ readonly 400: "#94a3b8";
40
+ readonly 500: "#64748b";
41
+ readonly 600: "#475569";
42
+ readonly 700: "#334155";
43
+ readonly 800: "#1e293b";
44
+ readonly 900: "#0f172a";
45
+ readonly 950: "#020617";
43
46
  };
44
47
  readonly red: {
45
48
  readonly 50: "#f6cac6";
@@ -225,6 +228,19 @@ declare const brandPrimitives: {
225
228
  readonly 900: "#3d0c29";
226
229
  readonly 950: "#26081a";
227
230
  };
231
+ readonly ai: {
232
+ readonly 50: "#f0edff";
233
+ readonly 100: "#e4deff";
234
+ readonly 200: "#cdc2ff";
235
+ readonly 300: "#b0a0ff";
236
+ readonly 400: "#9378ff";
237
+ readonly 500: "#7c5cfc";
238
+ readonly 600: "#6a44f0";
239
+ readonly 700: "#5835d4";
240
+ readonly 800: "#482dac";
241
+ readonly 900: "#3b278a";
242
+ readonly 950: "#24185e";
243
+ };
228
244
  };
229
245
  declare const BrandSoft: _primeuix_themes_types.Preset;
230
246
  declare const BrandCrisp: _primeuix_themes_types.Preset;
@@ -338,8 +354,15 @@ declare class LayoutService {
338
354
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutService>;
339
355
  }
340
356
 
357
+ declare class FooterService {
358
+ readonly content: _angular_core.WritableSignal<TemplateRef<unknown> | null>;
359
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FooterService, never>;
360
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<FooterService>;
361
+ }
362
+
341
363
  declare class AppLayout {
342
364
  layoutService: LayoutService;
365
+ private elRef;
343
366
  constructor();
344
367
  containerClass: _angular_core.Signal<{
345
368
  [x: string]: boolean;
@@ -390,6 +413,7 @@ declare class AppSidebar implements OnInit, OnDestroy {
390
413
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSidebar, "[app-sidebar]", never, {}, {}, never, never, true, never>;
391
414
  }
392
415
 
416
+ type DropdownId = 'notifications' | 'language' | 'profile' | null;
393
417
  interface NotificationsBars {
394
418
  id: string;
395
419
  label: string;
@@ -403,12 +427,13 @@ declare class AppTopbar implements AfterViewChecked {
403
427
  isDarkTheme: _angular_core.Signal<boolean>;
404
428
  isSidebarPinned: _angular_core.Signal<boolean>;
405
429
  searchActive: _angular_core.WritableSignal<boolean>;
406
- profileMenuOpen: _angular_core.WritableSignal<boolean>;
430
+ activeDropdown: _angular_core.WritableSignal<DropdownId>;
407
431
  private shouldFocusSearch;
408
432
  menuButton: ElementRef;
409
433
  searchInput?: ElementRef<HTMLInputElement>;
434
+ notificationsItem: ElementRef;
435
+ languageItem: ElementRef;
410
436
  profileItem: ElementRef;
411
- profilePanel: ElementRef;
412
437
  notificationsBars: _angular_core.WritableSignal<NotificationsBars[]>;
413
438
  notifications: _angular_core.WritableSignal<any[]>;
414
439
  languages: _angular_core.WritableSignal<{
@@ -425,7 +450,8 @@ declare class AppTopbar implements AfterViewChecked {
425
450
  showRightMenu(): void;
426
451
  onConfigButtonClick(): void;
427
452
  selectLanguage(code: string): void;
428
- toggleProfileMenu(event: Event): void;
453
+ toggleDropdown(id: DropdownId, event: Event): void;
454
+ closeDropdown(): void;
429
455
  onDocumentClick(event: MouseEvent): void;
430
456
  openSearch(): void;
431
457
  closeSearch(): void;
@@ -495,6 +521,8 @@ declare class AppBreadcrumb {
495
521
  }
496
522
 
497
523
  declare class AppFooter {
524
+ layoutService: LayoutService;
525
+ readonly copyrightYear: number;
498
526
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFooter, never>;
499
527
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppFooter, "[app-footer]", never, {}, {}, never, never, true, never>;
500
528
  }
@@ -546,11 +574,9 @@ declare type SurfacesType = {
546
574
  declare class AppConfigurator implements OnInit {
547
575
  simple: boolean;
548
576
  location: string;
549
- router: Router;
550
577
  config: PrimeNG;
551
578
  layoutService: LayoutService;
552
579
  platformId: Object;
553
- primeng: PrimeNG;
554
580
  presetKeys: (keyof typeof brandPresets)[];
555
581
  themeOptions: {
556
582
  name: string;
@@ -687,6 +713,40 @@ declare class AiInsightsCardComponent implements OnInit {
687
713
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AiInsightsCardComponent, "ux-ai-insights-card", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "insights": { "alias": "insights"; "required": true; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; }, { "actionClick": "actionClick"; }, never, never, true, never>;
688
714
  }
689
715
 
716
+ interface CompletionStep {
717
+ type: 'mandatory' | 'optional';
718
+ filled: boolean;
719
+ name: string;
720
+ }
721
+ interface CompletionCategory {
722
+ filled: number;
723
+ total: number;
724
+ }
725
+ declare class CompletionStepsComponent {
726
+ title: _angular_core.InputSignal<string>;
727
+ steps: _angular_core.InputSignal<CompletionStep[]>;
728
+ mandatory: _angular_core.InputSignal<CompletionCategory>;
729
+ optional: _angular_core.InputSignal<CompletionCategory>;
730
+ totalRecords: _angular_core.InputSignal<number>;
731
+ interactive: _angular_core.InputSignal<boolean>;
732
+ emptyTitle: _angular_core.InputSignal<string>;
733
+ emptyDescription: _angular_core.InputSignal<string>;
734
+ stepClick: _angular_core.OutputEmitterRef<number>;
735
+ private readonly dotStyles;
736
+ filledTotal: _angular_core.Signal<number>;
737
+ empty: _angular_core.Signal<boolean>;
738
+ legendMandatoryBg: _angular_core.Signal<string>;
739
+ legendOptionalBg: _angular_core.Signal<string>;
740
+ getDotStyle(step: CompletionStep): {
741
+ bg: string;
742
+ text: string;
743
+ icon: string;
744
+ iconClass: string;
745
+ };
746
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CompletionStepsComponent, never>;
747
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CompletionStepsComponent, "ux-completion-steps", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "mandatory": { "alias": "mandatory"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; }, { "stepClick": "stepClick"; }, never, never, true, never>;
748
+ }
749
+
690
750
  interface DetailTab {
691
751
  value: string;
692
752
  label: string;
@@ -723,12 +783,11 @@ declare class DetailTabDirective {
723
783
  * <ng-template uxDetailTab="scope">...tab 2...</ng-template>
724
784
  *
725
785
  * <ng-container ux-detail-sidebar>
786
+ * <!-- Use ng-container so children become direct children of the
787
+ * library's flex container and inherit the gap spacing. -->
726
788
  * ...right sidebar (AI card, documents, etc.)...
727
789
  * </ng-container>
728
790
  *
729
- * <ng-container ux-detail-footer>
730
- * ...audit metadata row...
731
- * </ng-container>
732
791
  * </ux-detail-layout>
733
792
  * ```
734
793
  */
@@ -737,161 +796,149 @@ declare class DetailLayoutComponent {
737
796
  readonly tabs: _angular_core.InputSignal<DetailTab[]>;
738
797
  /** Currently active tab value (two-way bindable). */
739
798
  readonly activeTab: _angular_core.ModelSignal<string>;
799
+ /** Options for the mobile tab dropdown. */
800
+ readonly tabOptions: _angular_core.Signal<{
801
+ label: string;
802
+ value: string;
803
+ }[]>;
804
+ /** True when there is only a single tab, making the tab bar redundant. */
805
+ readonly singleTab: _angular_core.Signal<boolean>;
806
+ /** True when viewport is below the lg breakpoint (1024px). */
807
+ readonly isMobile: _angular_core.WritableSignal<boolean>;
740
808
  /** True once the scrollable body has been scrolled past the threshold. */
741
809
  readonly scrolled: _angular_core.WritableSignal<boolean>;
810
+ constructor();
742
811
  /** Tab content templates provided by the consumer. */
743
812
  tabTemplates: QueryList<DetailTabDirective>;
744
813
  getTabTemplate(value: string): TemplateRef<unknown> | null;
745
814
  onScroll(event: Event): void;
746
815
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DetailLayoutComponent, never>;
747
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DetailLayoutComponent, "ux-detail-layout", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["tabTemplates"], ["[ux-detail-header]", "[ux-detail-header-meta]", "[ux-detail-footer]", "[ux-detail-sidebar]"], true, never>;
816
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DetailLayoutComponent, "ux-detail-layout", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["tabTemplates"], ["[ux-detail-header]", "[ux-detail-header-meta]", "[ux-detail-sidebar]"], true, never>;
748
817
  }
749
818
 
750
- interface Blog {
751
- name?: string;
752
- coverImage?: any;
753
- profile?: string;
754
- title?: string;
755
- description?: string;
756
- comment?: number;
757
- share?: number;
758
- day?: string;
759
- month?: string;
760
- code?: string;
761
- status?: string;
762
- tags?: string[];
763
- }
764
- interface Comment$1 {
765
- image?: string;
766
- name?: string;
767
- date?: string;
768
- description?: string;
769
- }
770
-
771
- interface Message {
772
- text: string;
773
- ownerId: number;
774
- createdAt: number;
775
- }
776
-
777
- interface Chat {
778
- userId: number;
779
- name: string;
780
- photoUrl?: string;
781
- messages: Message[];
782
- status: string;
783
- }
784
-
785
- interface Country {
786
- name?: string;
787
- code?: string;
788
- }
789
- interface Representative {
790
- name?: string;
791
- image?: string;
792
- }
793
- interface Customer {
794
- id?: number;
795
- name?: string;
796
- country?: Country;
797
- company?: string;
798
- date?: string;
799
- status?: string;
800
- activity?: number;
801
- representative?: Representative;
819
+ interface PillTabItem {
820
+ value: string;
821
+ label: string;
802
822
  }
803
-
804
- interface File {
805
- name?: string;
806
- image?: string;
807
- date?: string;
808
- fileSize?: string;
823
+ /**
824
+ * Horizontal row of pill-shaped sub-tab buttons. Styling aligns with sidebar menu item
825
+ * hover/active tokens (`--d-menuitem-*`).
826
+ */
827
+ declare class PillTabsComponent {
828
+ readonly items: _angular_core.InputSignal<PillTabItem[]>;
829
+ readonly activeValue: _angular_core.ModelSignal<string>;
830
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PillTabsComponent, never>;
831
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PillTabsComponent, "ux-pill-tabs", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "activeValue": { "alias": "activeValue"; "required": false; "isSignal": true; }; }, { "activeValue": "activeValueChange"; }, never, never, true, never>;
809
832
  }
810
833
 
811
- interface Folder {
812
- name: string;
834
+ interface DocumentItem {
835
+ id: number;
836
+ fileName: string;
837
+ type: string;
838
+ fileSize: string;
839
+ uploadDate: string;
840
+ owner: string;
813
841
  icon: string;
814
- size: string;
815
842
  }
816
-
817
- interface Image {
818
- previewImageSrc: string;
819
- thumbnailImageSrc: string;
820
- alt: string;
821
- title: string;
822
- }
823
-
824
- interface KanbanCardType {
825
- id: string;
826
- title?: string;
827
- description?: string;
828
- progress?: number;
829
- assignees?: Assignee[];
830
- attachments?: number;
831
- comments?: Comment[];
832
- startDate?: string;
833
- dueDate?: string;
834
- completed?: boolean;
835
- priority?: Object;
836
- taskList: TaskList;
837
- }
838
- interface KanbanListType {
839
- listId: string;
840
- title?: string;
841
- cards: KanbanCardType[];
842
- }
843
- interface Comment {
844
- id?: string;
845
- name: string;
846
- image?: string;
847
- text: string;
843
+ declare class DocumentsCardComponent {
844
+ documents: _angular_core.InputSignal<DocumentItem[]>;
845
+ rows: _angular_core.InputSignal<number>;
846
+ expanded: _angular_core.WritableSignal<boolean>;
847
+ activeFilter: _angular_core.WritableSignal<string>;
848
+ searchQuery: _angular_core.ModelSignal<string>;
849
+ private fileTypes;
850
+ filterOptions: _angular_core.Signal<string[]>;
851
+ pillTabItems: _angular_core.Signal<PillTabItem[]>;
852
+ summary: _angular_core.Signal<string>;
853
+ filtered: _angular_core.Signal<DocumentItem[]>;
854
+ menuItems: MenuItem$1[];
855
+ onMenuToggle(event: Event, _doc: DocumentItem, menu: Menu): void;
856
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DocumentsCardComponent, never>;
857
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DocumentsCardComponent, "ux-documents-card", never, { "documents": { "alias": "documents"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; }, { "searchQuery": "searchQueryChange"; }, never, never, true, never>;
858
+ }
859
+
860
+ declare class FooterMainComponent {
861
+ /** When true, always shows the default copyright — ignores FooterService content. */
862
+ copyrightOnly: _angular_core.InputSignal<boolean>;
863
+ protected readonly footerService: FooterService;
864
+ protected readonly copyrightYear: number;
865
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FooterMainComponent, never>;
866
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FooterMainComponent, "ux-footer-main", never, { "copyrightOnly": { "alias": "copyrightOnly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
867
+ }
868
+
869
+ declare class UxSelectComponent {
870
+ readonly options: _angular_core.InputSignal<any[]>;
871
+ readonly optionLabel: _angular_core.InputSignal<string>;
872
+ readonly optionValue: _angular_core.InputSignal<string>;
873
+ readonly optionGroupLabel: _angular_core.InputSignal<string>;
874
+ readonly optionGroupChildren: _angular_core.InputSignal<string>;
875
+ readonly placeholder: _angular_core.InputSignal<string>;
876
+ readonly disabled: _angular_core.InputSignal<boolean>;
877
+ readonly filter: _angular_core.InputSignal<boolean>;
878
+ readonly showClear: _angular_core.InputSignal<boolean>;
879
+ readonly emptyMessage: _angular_core.InputSignal<string>;
880
+ readonly group: _angular_core.InputSignal<boolean>;
881
+ readonly styleClass: _angular_core.InputSignal<string>;
882
+ readonly value: _angular_core.ModelSignal<any>;
883
+ readonly onChange: _angular_core.OutputEmitterRef<any>;
884
+ readonly onFilter: _angular_core.OutputEmitterRef<any>;
885
+ readonly resolvedStyleClass: _angular_core.Signal<string>;
886
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UxSelectComponent, never>;
887
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UxSelectComponent, "ux-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionGroupLabel": { "alias": "optionGroupLabel"; "required": false; "isSignal": true; }; "optionGroupChildren": { "alias": "optionGroupChildren"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onChange": "onChange"; "onFilter": "onFilter"; }, never, never, true, never>;
888
+ }
889
+
890
+ interface TaskDrawerMember {
891
+ name?: string;
892
+ image: string;
848
893
  }
849
- interface ListName {
850
- listId?: string;
894
+ interface TaskDrawerTask {
895
+ id: number | null;
851
896
  title: string;
897
+ description: string | null;
898
+ status: string;
899
+ completed: boolean;
900
+ startDate: string | null;
901
+ endDate: string | null;
902
+ members: TaskDrawerMember[];
852
903
  }
853
- interface TaskList {
854
- id?: string;
904
+ interface FormData {
905
+ id: number | null;
855
906
  title: string;
856
- tasks: Task$1[];
857
- }
858
- interface Task$1 {
859
- text: string;
907
+ description: string;
908
+ status: string;
860
909
  completed: boolean;
910
+ startDate: Date | null;
911
+ endDate: Date | null;
912
+ members: TaskDrawerMember[];
861
913
  }
862
- interface Assignee {
863
- name: string;
864
- image: string;
865
- }
866
-
867
- interface Mail {
868
- id?: any;
869
- from?: string;
870
- to?: string;
871
- email?: string;
872
- image?: string;
873
- date?: string;
874
- message?: string;
875
- title?: string;
876
- important?: boolean;
877
- starred?: boolean;
878
- trash?: boolean;
879
- archived?: boolean;
880
- spam?: boolean;
881
- sent?: boolean;
914
+ interface StatusOption {
915
+ label: string;
916
+ value: string;
882
917
  }
883
-
884
- interface Metric {
885
- title: string;
886
- icon: string;
887
- fieldColor: string;
888
- color: string;
889
- files: string;
890
- fileSize: string;
891
- items: object;
918
+ declare class TaskDrawerComponent implements OnChanges {
919
+ visible: _angular_core.ModelSignal<boolean>;
920
+ task: _angular_core.InputSignal<TaskDrawerTask | null>;
921
+ mode: _angular_core.InputSignal<"create" | "edit">;
922
+ availableMembers: _angular_core.InputSignal<TaskDrawerMember[]>;
923
+ save: _angular_core.OutputEmitterRef<TaskDrawerTask>;
924
+ cancel: _angular_core.OutputEmitterRef<void>;
925
+ drawerTitle: _angular_core.Signal<"Create New Task" | "Edit Task">;
926
+ formData: FormData;
927
+ statusOptions: StatusOption[];
928
+ filteredMembers: TaskDrawerMember[];
929
+ ngOnChanges(changes: SimpleChanges): void;
930
+ parseDate(dateStr: string): Date | null;
931
+ resetForm(): void;
932
+ filterMembers(event: AutoCompleteCompleteEvent): void;
933
+ formatDateForSave(date: Date | null): string | null;
934
+ handleSave(): void;
935
+ handleCancel(): void;
936
+ onHide(): void;
937
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskDrawerComponent, never>;
938
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaskDrawerComponent, "ux-task-drawer", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "task": { "alias": "task"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "availableMembers": { "alias": "availableMembers"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "save": "save"; "cancel": "cancel"; }, never, never, true, never>;
892
939
  }
893
940
 
894
- interface Member$1 {
941
+ interface Member {
895
942
  id?: number;
896
943
  name?: string;
897
944
  image?: string;
@@ -922,44 +969,5 @@ interface Partner {
922
969
  lastModifiedDate?: Date | null;
923
970
  }
924
971
 
925
- interface InventoryStatus {
926
- label: string;
927
- value: string;
928
- }
929
- interface Product {
930
- id?: string;
931
- code?: string;
932
- name?: string;
933
- description?: string;
934
- price?: number;
935
- quantity?: number;
936
- inventoryStatus?: InventoryStatus;
937
- category?: string;
938
- image?: string;
939
- rating?: number;
940
- }
941
-
942
- interface Task {
943
- id: number;
944
- name?: string;
945
- description?: string;
946
- startDate?: Date;
947
- endDate?: Date;
948
- members?: Member[];
949
- completed?: boolean;
950
- status?: string;
951
- comments?: number;
952
- attachments?: number;
953
- }
954
- interface Member {
955
- name?: string;
956
- image?: string;
957
- }
958
- interface DialogConfig {
959
- visible: boolean;
960
- header?: string;
961
- newTask?: boolean;
962
- }
963
-
964
- export { AiCardBgComponent, AiInsightsCardComponent, AppBreadcrumb, AppConfigurator, AppFooter, AppLayout, AppMenu, AppMenuitem, AppRightMenu, AppSearch, AppSidebar, AppTopbar, AuthLayout, BrandContrast, BrandCrisp, BrandSoft, DetailLayoutComponent, DetailTabDirective, LayoutService, MENU_MODEL, SIDEBAR_LOGO, TOPBAR_MOBILE_LOGO, brandPresets, brandPrimitives };
965
- export type { AiInsight, Assignee, Blog, Chat, Comment$1 as Comment, Country, Customer, DetailTab, DialogConfig, File, Folder, Image, KanbanCardType, Comment as KanbanComment, KanbanListType, Task$1 as KanbanTask, LayoutConfig, ListName, Mail, Member$1 as Member, MenuItem, Message, Metric, Partner, Product, Representative, SidebarLogoConfig, Task, TaskList, TopbarMobileLogoConfig };
972
+ export { AiCardBgComponent, AiInsightsCardComponent, AppBreadcrumb, AppConfigurator, AppFooter, AppLayout, AppMenu, AppMenuitem, AppRightMenu, AppSearch, AppSidebar, AppTopbar, AuthLayout, BrandContrast, BrandCrisp, BrandSoft, CompletionStepsComponent, DetailLayoutComponent, DetailTabDirective, DocumentsCardComponent, FooterMainComponent, FooterService, LayoutService, MENU_MODEL, PillTabsComponent, SIDEBAR_LOGO, TOPBAR_MOBILE_LOGO, TaskDrawerComponent, UxSelectComponent, brandPresets, brandPrimitives };
973
+ export type { AiInsight, CompletionCategory, CompletionStep, DetailTab, DocumentItem, LayoutConfig, Member, MenuItem, Partner, PillTabItem, SidebarLogoConfig, TaskDrawerMember, TaskDrawerTask, TopbarMobileLogoConfig };
@@ -1,55 +0,0 @@
1
- <svg width="126" height="94" viewBox="0 0 126 94" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
- <g clip-path="url(#clip0_2140_6642)">
3
- <mask id="mask0_2140_6642" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="30" y="0" width="65" height="64">
4
- <path d="M94.8779 0H30.8779V64H94.8779V0Z" fill="white"/>
5
- </mask>
6
- <g mask="url(#mask0_2140_6642)">
7
- <mask id="mask1_2140_6642" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="44" y="10" width="37" height="44">
8
- <path d="M80.8946 10.8555H44.8618V53.1276H80.8946V10.8555Z" fill="white"/>
9
- </mask>
10
- <g mask="url(#mask1_2140_6642)">
11
- <mask id="mask2_2140_6642" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="36" y="2" width="54" height="60">
12
- <path d="M89.3493 2.40137H36.4077V61.5823H89.3493V2.40137Z" fill="white"/>
13
- </mask>
14
- <g mask="url(#mask2_2140_6642)">
15
- <rect x="36.1875" y="2.3501" width="53.5672" height="59.2486" fill="url(#pattern0_2140_6642)"/>
16
- </g>
17
- </g>
18
- <path d="M43.7628 8.30234C39.3496 11.8701 36.7964 15.3533 36.7964 15.3533L49.9177 31.8733C50.1375 31.6027 53.9081 32.7694 58.4566 27.0204C59.3866 25.8537 60.5702 23.7401 61.8215 22.1676C65.6936 17.2809 63.1235 16.4017 64.0027 16.9259C53.0458 4.49785 44.7774 7.82889 43.7628 8.30234Z" fill="url(#paint0_linear_2140_6642)"/>
19
- <path d="M67.3341 1.91126C64.8992 1.53926 62.5827 1.52235 60.4184 1.70835C53.1476 2.35089 47.6353 5.54666 45.1328 7.25445C44.6594 7.60954 44.2028 7.94771 43.7632 8.3028C44.7439 7.84626 52.4374 4.75194 62.7518 15.5905C63.1576 16.0132 62.346 20.325 62.9209 21.0521C72.5759 33.2095 75.8562 31.7892 75.8731 31.8061L88.5886 15.7934C88.5886 15.7934 80.523 3.87268 67.3341 1.91126Z" fill="url(#paint1_linear_2140_6642)"/>
20
- <path d="M82.0448 55.4782C86.458 51.9104 89.0112 48.4272 89.0112 48.4272L75.8899 31.9072L74.4865 33.6827C73.9116 34.3928 65.7277 34.1392 64.3243 35.9315C62.4474 38.2988 63.9185 46.7363 63.259 47.1083C62.5658 47.4972 62.2783 47.1252 61.8218 46.8546C72.7618 59.2996 81.0302 55.9685 82.0448 55.4951V55.4782Z" fill="url(#paint2_linear_2140_6642)"/>
21
- <path d="M58.473 61.8695C60.9079 62.2415 63.2244 62.2584 65.3887 62.0724C72.6595 61.4299 78.1718 58.2341 80.6743 56.5263C81.1478 56.1712 81.6043 55.8331 82.0439 55.478C81.0463 55.9514 73.2006 59.0965 62.7171 47.8352C62.4128 47.5139 62.6157 41.9678 62.3113 41.6296C61.7533 40.9871 61.0431 34.5617 60.4682 33.8346C55.2434 27.2571 52.352 35.0183 51.1007 33.4457L49.9171 31.9578L37.2017 47.9704C37.2017 47.9704 45.2841 59.8912 58.473 61.8695Z" fill="url(#paint3_linear_2140_6642)"/>
22
- <path d="M37.2015 47.9709C37.2015 47.9709 49.9 31.9413 49.9169 31.9075C49.9169 31.8737 36.8633 15.4214 36.8633 15.4214C35.6797 16.8248 32.0273 22.7767 32.0273 31.8737C32.0273 40.9707 37.2184 47.954 37.2184 47.954L37.2015 47.9709Z" fill="#4EC3E0"/>
23
- <path d="M88.5543 15.7249C88.5543 15.7249 75.7881 31.8391 75.7881 31.856C75.7881 31.8898 88.9094 48.4097 88.9094 48.4097C90.093 47.0063 93.7622 41.0206 93.7622 31.8729C93.7622 22.7252 88.5543 15.708 88.5543 15.708V15.7249Z" fill="#4EC3E0"/>
24
- <path d="M62.8702 10.9741L62.9548 11.549C63.0731 19.0396 67.4525 25.9385 74.0132 29.4555C77.0398 31.0787 80.354 31.8735 83.8034 31.8904C81.9434 31.9411 80.1173 32.144 78.3249 32.6344C70.141 34.8663 63.9186 42.0188 63.0393 50.507C62.9548 51.2679 62.9717 52.0288 62.8871 52.7897C62.921 48.1905 61.3992 43.7773 58.643 40.1419C55.8869 36.5065 52.2007 34.0547 48.0243 32.7865C46.0628 32.1778 44.0507 31.9242 41.9878 31.8904C44.8454 31.8735 47.6861 31.3324 50.29 30.1995C57.8145 26.9192 63.0224 19.2933 62.8702 10.991V10.9741Z" fill="white"/>
25
- </g>
26
- <path d="M13.158 80.556C13.158 81.552 13.032 82.458 12.78 83.274C12.54 84.078 12.168 84.774 11.664 85.362C11.172 85.95 10.542 86.4 9.774 86.712C9.018 87.024 8.13 87.18 7.11 87.18C6.078 87.18 5.178 87.024 4.41 86.712C3.654 86.388 3.03 85.938 2.538 85.362C2.046 84.774 1.674 84.072 1.422 83.256C1.182 82.44 1.062 81.534 1.062 80.538C1.062 79.206 1.278 78.048 1.71 77.064C2.154 76.08 2.82 75.318 3.708 74.778C4.608 74.226 5.748 73.95 7.128 73.95C8.484 73.95 9.606 74.226 10.494 74.778C11.382 75.318 12.048 76.086 12.492 77.082C12.936 78.066 13.158 79.224 13.158 80.556ZM3.492 80.556C3.492 81.528 3.618 82.362 3.87 83.058C4.134 83.754 4.53 84.288 5.058 84.66C5.598 85.032 6.282 85.218 7.11 85.218C7.962 85.218 8.652 85.032 9.18 84.66C9.708 84.288 10.098 83.754 10.35 83.058C10.602 82.362 10.728 81.528 10.728 80.556C10.728 79.104 10.446 77.964 9.882 77.136C9.318 76.308 8.4 75.894 7.128 75.894C6.288 75.894 5.598 76.08 5.058 76.452C4.53 76.824 4.134 77.358 3.87 78.054C3.618 78.75 3.492 79.584 3.492 80.556ZM20.8087 77.064C21.9487 77.064 22.8667 77.49 23.5627 78.342C24.2587 79.182 24.6067 80.436 24.6067 82.104C24.6067 83.208 24.4447 84.138 24.1207 84.894C23.7967 85.65 23.3467 86.22 22.7707 86.604C22.1947 86.988 21.5227 87.18 20.7547 87.18C20.2867 87.18 19.8727 87.12 19.5127 87C19.1527 86.868 18.8467 86.706 18.5947 86.514C18.3427 86.31 18.1267 86.094 17.9467 85.866H17.8027C17.8507 86.082 17.8867 86.328 17.9107 86.604C17.9347 86.868 17.9467 87.12 17.9467 87.36V91.32H15.6787V77.244H17.5147L17.8387 78.54H17.9467C18.1267 78.264 18.3427 78.018 18.5947 77.802C18.8587 77.574 19.1707 77.394 19.5307 77.262C19.9027 77.13 20.3287 77.064 20.8087 77.064ZM20.1607 78.9C19.6327 78.9 19.2067 79.008 18.8827 79.224C18.5587 79.428 18.3247 79.746 18.1807 80.178C18.0367 80.61 17.9587 81.15 17.9467 81.798V82.086C17.9467 82.782 18.0127 83.37 18.1447 83.85C18.2887 84.33 18.5227 84.696 18.8467 84.948C19.1827 85.2 19.6327 85.326 20.1967 85.326C20.6767 85.326 21.0667 85.194 21.3667 84.93C21.6787 84.666 21.9067 84.294 22.0507 83.814C22.2067 83.322 22.2847 82.74 22.2847 82.068C22.2847 81.06 22.1107 80.28 21.7627 79.728C21.4267 79.176 20.8927 78.9 20.1607 78.9ZM32.0763 77.064C33.2163 77.064 34.1343 77.49 34.8303 78.342C35.5263 79.182 35.8743 80.436 35.8743 82.104C35.8743 83.208 35.7123 84.138 35.3883 84.894C35.0643 85.65 34.6143 86.22 34.0383 86.604C33.4623 86.988 32.7903 87.18 32.0223 87.18C31.5543 87.18 31.1403 87.12 30.7803 87C30.4203 86.868 30.1143 86.706 29.8623 86.514C29.6103 86.31 29.3943 86.094 29.2143 85.866H29.0703C29.1183 86.082 29.1543 86.328 29.1783 86.604C29.2023 86.868 29.2143 87.12 29.2143 87.36V91.32H26.9463V77.244H28.7823L29.1063 78.54H29.2143C29.3943 78.264 29.6103 78.018 29.8623 77.802C30.1263 77.574 30.4383 77.394 30.7983 77.262C31.1703 77.13 31.5963 77.064 32.0763 77.064ZM31.4283 78.9C30.9003 78.9 30.4743 79.008 30.1503 79.224C29.8263 79.428 29.5923 79.746 29.4483 80.178C29.3043 80.61 29.2263 81.15 29.2143 81.798V82.086C29.2143 82.782 29.2803 83.37 29.4123 83.85C29.5563 84.33 29.7903 84.696 30.1143 84.948C30.4503 85.2 30.9003 85.326 31.4643 85.326C31.9443 85.326 32.3343 85.194 32.6343 84.93C32.9463 84.666 33.1743 84.294 33.3183 83.814C33.4743 83.322 33.5523 82.74 33.5523 82.068C33.5523 81.06 33.3783 80.28 33.0303 79.728C32.6943 79.176 32.1603 78.9 31.4283 78.9ZM46.9259 82.104C46.9259 82.92 46.8179 83.64 46.6019 84.264C46.3859 84.888 46.0739 85.422 45.6659 85.866C45.2699 86.298 44.7779 86.628 44.1899 86.856C43.6139 87.072 42.9719 87.18 42.2639 87.18C41.5919 87.18 40.9739 87.072 40.4099 86.856C39.8459 86.628 39.3539 86.298 38.9339 85.866C38.5259 85.422 38.2079 84.888 37.9799 84.264C37.7519 83.64 37.6379 82.92 37.6379 82.104C37.6379 81.024 37.8239 80.112 38.1959 79.368C38.5679 78.612 39.1019 78.042 39.7979 77.658C40.5059 77.262 41.3399 77.064 42.2999 77.064C43.2119 77.064 44.0099 77.262 44.6939 77.658C45.3899 78.042 45.9359 78.612 46.3319 79.368C46.7279 80.112 46.9259 81.024 46.9259 82.104ZM39.9599 82.104C39.9599 82.788 40.0379 83.376 40.1939 83.868C40.3619 84.348 40.6139 84.714 40.9499 84.966C41.2979 85.218 41.7419 85.344 42.2819 85.344C42.8339 85.344 43.2779 85.218 43.6139 84.966C43.9619 84.714 44.2139 84.348 44.3699 83.868C44.5259 83.376 44.6039 82.788 44.6039 82.104C44.6039 81.408 44.5199 80.826 44.3519 80.358C44.1959 79.878 43.9439 79.518 43.5959 79.278C43.2599 79.026 42.8219 78.9 42.2819 78.9C41.4659 78.9 40.8719 79.176 40.4999 79.728C40.1399 80.28 39.9599 81.072 39.9599 82.104ZM54.3825 77.064C54.5265 77.064 54.6945 77.07 54.8865 77.082C55.0785 77.094 55.2405 77.118 55.3725 77.154L55.1745 79.26C55.0665 79.236 54.9225 79.218 54.7425 79.206C54.5745 79.182 54.4245 79.17 54.2925 79.17C53.9325 79.17 53.5845 79.23 53.2485 79.35C52.9245 79.458 52.6305 79.626 52.3665 79.854C52.1145 80.07 51.9105 80.352 51.7545 80.7C51.6105 81.048 51.5385 81.462 51.5385 81.942V87H49.2705V77.244H51.0165L51.3405 78.936H51.4485C51.6405 78.588 51.8805 78.276 52.1685 78C52.4565 77.712 52.7865 77.484 53.1585 77.316C53.5425 77.148 53.9505 77.064 54.3825 77.064ZM60.9607 85.362C61.2487 85.362 61.5247 85.338 61.7887 85.29C62.0527 85.23 62.2987 85.164 62.5267 85.092V86.784C62.2867 86.892 61.9747 86.982 61.5907 87.054C61.2067 87.138 60.8047 87.18 60.3847 87.18C59.8327 87.18 59.3287 87.09 58.8727 86.91C58.4287 86.718 58.0687 86.394 57.7927 85.938C57.5287 85.482 57.3967 84.846 57.3967 84.03V78.954H56.0827V77.964L57.5227 77.172L58.2427 75.102H59.6647V77.244H62.4367V78.954H59.6647V84.012C59.6647 84.468 59.7847 84.81 60.0247 85.038C60.2647 85.254 60.5767 85.362 60.9607 85.362ZM73.1512 77.244V87H71.3692L71.0632 85.74H70.9552C70.7512 86.076 70.4872 86.352 70.1632 86.568C69.8392 86.772 69.4852 86.922 69.1012 87.018C68.7172 87.126 68.3212 87.18 67.9132 87.18C67.1932 87.18 66.5692 87.054 66.0412 86.802C65.5132 86.55 65.1112 86.166 64.8352 85.65C64.5592 85.122 64.4212 84.444 64.4212 83.616V77.244H66.6892V83.166C66.6892 83.886 66.8332 84.432 67.1212 84.804C67.4092 85.164 67.8652 85.344 68.4892 85.344C69.1012 85.344 69.5812 85.218 69.9292 84.966C70.2772 84.702 70.5232 84.324 70.6672 83.832C70.8112 83.34 70.8832 82.734 70.8832 82.014V77.244H73.1512ZM81.262 77.064C82.354 77.064 83.206 77.346 83.818 77.91C84.442 78.474 84.754 79.386 84.754 80.646V87H82.486V81.096C82.486 80.364 82.342 79.818 82.054 79.458C81.766 79.086 81.31 78.9 80.686 78.9C79.774 78.9 79.15 79.188 78.814 79.764C78.478 80.328 78.31 81.15 78.31 82.23V87H76.042V77.244H77.788L78.112 78.522H78.238C78.454 78.186 78.718 77.91 79.03 77.694C79.342 77.478 79.69 77.322 80.074 77.226C80.458 77.118 80.854 77.064 81.262 77.064ZM89.8588 77.244V87H87.5908V77.244H89.8588ZM88.7248 73.482C89.0608 73.482 89.3548 73.572 89.6068 73.752C89.8588 73.92 89.9848 74.226 89.9848 74.67C89.9848 75.102 89.8588 75.414 89.6068 75.606C89.3548 75.786 89.0608 75.876 88.7248 75.876C88.3768 75.876 88.0768 75.786 87.8248 75.606C87.5848 75.414 87.4648 75.102 87.4648 74.67C87.4648 74.226 87.5848 73.92 87.8248 73.752C88.0768 73.572 88.3768 73.482 88.7248 73.482ZM96.5388 85.362C96.8268 85.362 97.1028 85.338 97.3668 85.29C97.6308 85.23 97.8768 85.164 98.1048 85.092V86.784C97.8648 86.892 97.5528 86.982 97.1688 87.054C96.7848 87.138 96.3828 87.18 95.9628 87.18C95.4108 87.18 94.9068 87.09 94.4508 86.91C94.0068 86.718 93.6468 86.394 93.3708 85.938C93.1068 85.482 92.9748 84.846 92.9748 84.03V78.954H91.6608V77.964L93.1008 77.172L93.8208 75.102H95.2428V77.244H98.0148V78.954H95.2428V84.012C95.2428 84.468 95.3628 84.81 95.6028 85.038C95.8428 85.254 96.1548 85.362 96.5388 85.362ZM98.6133 77.244H101.079L103.023 82.752C103.107 82.992 103.179 83.226 103.239 83.454C103.311 83.67 103.371 83.892 103.419 84.12C103.467 84.348 103.503 84.576 103.527 84.804H103.599C103.647 84.504 103.719 84.174 103.815 83.814C103.923 83.454 104.031 83.1 104.139 82.752L106.011 77.244H108.459L104.301 88.296C104.061 88.932 103.755 89.478 103.383 89.934C103.023 90.39 102.591 90.732 102.087 90.96C101.595 91.2 101.037 91.32 100.413 91.32C100.125 91.32 99.8673 91.302 99.6393 91.266C99.4233 91.242 99.2313 91.212 99.0633 91.176V89.376C99.1953 89.4 99.3513 89.424 99.5313 89.448C99.7233 89.472 99.9213 89.484 100.125 89.484C100.497 89.484 100.815 89.406 101.079 89.25C101.355 89.106 101.583 88.902 101.763 88.638C101.955 88.374 102.111 88.08 102.231 87.756L102.519 86.964L98.6133 77.244Z" fill="black"/>
27
- <path d="M117.685 81.7257H113V78.3472H117.685V73.7271H121.071V78.3472H125.756V81.7257H121.071V86.2733H117.685V81.7257Z" fill="#006496"/>
28
- </g>
29
- <defs>
30
- <pattern id="pattern0_2140_6642" patternContentUnits="objectBoundingBox" width="1" height="1">
31
- <use xlink:href="#image0_2140_6642" transform="scale(0.0153846 0.0136986)"/>
32
- </pattern>
33
- <linearGradient id="paint0_linear_2140_6642" x1="43.3696" y1="25.3311" x2="57.9325" y2="10.7682" gradientUnits="userSpaceOnUse">
34
- <stop offset="0.03" stop-color="#4EC3E0"/>
35
- <stop offset="0.85" stop-color="#0092D1"/>
36
- </linearGradient>
37
- <linearGradient id="paint1_linear_2140_6642" x1="81.0923" y1="26.6348" x2="53.2698" y2="-1.18768" gradientUnits="userSpaceOnUse">
38
- <stop stop-color="#0D1E2F"/>
39
- <stop offset="0.41" stop-color="#073E5E"/>
40
- <stop offset="0.88" stop-color="#00669A"/>
41
- </linearGradient>
42
- <linearGradient id="paint2_linear_2140_6642" x1="66.9598" y1="52.1015" x2="81.5227" y2="37.5386" gradientUnits="userSpaceOnUse">
43
- <stop stop-color="#00669A"/>
44
- <stop offset="0.85" stop-color="#4EC3E0"/>
45
- </linearGradient>
46
- <linearGradient id="paint3_linear_2140_6642" x1="72.5904" y1="64.9305" x2="44.7799" y2="37.12" gradientUnits="userSpaceOnUse">
47
- <stop stop-color="#4EC3E0"/>
48
- <stop offset="0.85" stop-color="#00669A"/>
49
- </linearGradient>
50
- <clipPath id="clip0_2140_6642">
51
- <rect width="125.756" height="94" fill="white"/>
52
- </clipPath>
53
- <image id="image0_2140_6642" width="65" height="73" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABJCAYAAABipEsoAAAACXBIWXMAABcRAAAXEQHKJvM/AAAN40lEQVR4nL1cPatkWRVd+9z75gfYmeBko7EGOo0jaKaDuUwmgiKISGPkRJqMiSAYCf4C40FThR6chhk1N1GjCSYUod+rOmcb7O9Tt+pVvVftgeq6X+djr7P22vucW6+JmRmpvPf3T/He3z7FVmHQ5vX8BFg+xBznowO96/c+zvc7YH8H7O7iWz+0ewnsboG7W/ne3wG7ndZJ9foe6Dtpz9oeHRgD4IF3f/RdvPXlL+FrX/ni5oiJiMhAOGX8eUBw+kpAsAymgNA7MPZhtBt4JwbvbkF3t3Hv7qUe6zP7Xdzre/ns99Km9cNDgBgDYMa7P/4efvaT72+C0ADgW3/891kAPKyQAGPYGUiD/TaI5JPr5ApEempAczxXeJyKMtLaeO83v8Pb7/wQz1/89XCE3/zDv/j5J/8926Toc2bECSaMkWjaZdZ6onZxB3EB2t3G+e5WmXJb2WPtGLu6ssH7G9G/g8L4zz8/DiuIqF0CwKHR+XOsUMy2AZeP56oM0Nw2M8C9GCLtJGbwADC0SnouscHO3/7OD0qXbdO2bOMlhf2fqWwYP3fIE6CM4tN+zmlWxwQKo94vH/jx8xcf4fmLYEMFgadvb3jjc04pNifjs/8XX9d/zLCiFTMzeAJjbMx6ao9H6eeXv/6tD2E9MLpYf8K6s+pQNSYblcGhNtXnYEEOqyMbnD4YDhwxg5nFUzgB4djIcx/8JZiwHhpzzjTnZ2jjGsRYtrDAyXiKenbMaZDDBq71Mp3NWHcRAYpGfi4J8gFrRhoq44MPP1YQLgSADp46UscMK4LYABrpmn6SkJEPPsV6cFV7wOlPXAGpujK5UAGc8fzDjwAUTTjP0c/WyjnuEwGtKRC07SIlsUrCV/xf3IN6B41e7yFpwyyKefA1STYQzjSN70+cy+PzhTlU2lM5nDndh8b8HO/lmEqE6MIa15CZ/lz72FD/9YK5DSDILLqnzGwwv54zQDDQOyiLoQGQjbc1R8+hcqBGhySc1sVWzpDMnjTh3HIJH1AjggFojDDDfXDJv22R1Xeg/Z2c85CZ9wxxwwWs5BwiLqZLcnCYLJ1jzINLAsNDWFJtW/wYAOYa5g62WPJF0gTAHA2AjXMbS4BzGQjA44Ew4/PCiSioz8kdjAXdZn5X1yC5zpYgbrGgfEu5HITHFNcBpWSKBi52efHT96CuYIzsAv3QcODQ910PTpcHasJDi2aHlCOzDtoM3N0qA/YhhPu7iQUbUSCvK6RhHBf9yub/LwiUskBngxnRQ/jGECDuXgYL9qYFI0Kih8jZ4FPG83QOrDzdeqz03VssnWbWHaFdhEZLlPoeZFtnyoqSK/QEwix6OTlyiziM3DBwBXOqQ+B5gXft4mxNqzrbGDGDezLct+R2+knpsUWV3K6zTS2g+fjQqsO1Q2rs6uzISczgJHDJt7M+HHxSaPQ2pyyQ03Sb0XmNV/I3dYfjA2Z/8GpgZNq7wfu0A63usbtNzNjFfVshJptKyatSwmkAUlkLqlvp8NQpPSZPsNl2Aey67OW6NwhoiExb6b1jNptsghiJ9phymYkNbiolJpQ4miTyiLHM/AgguALhcT9SZNpPht+9lGTp1BrHh00HJlQC0PSVQZhpZGt8a6l0+Bgm6D88tWN7BwbSUKNd+O5PeFz43DT7l5NLTDbp18q2G+NA4IA6uWIhWmIRERWW+HHJ4TXJsZTY8gFjhd2zUEiSXHFrEkY3h0VVC8tdu2EM4bmygGAzw8n6o3Othm4Vu16AGENmwui8r6HPN0WG7RJ1ySadnRRA0PAd9uPDa4FEbsNKS5s3gGeuq8TcGb+IB5SpccxFykgsamnoyknQ6K72ZIuknO+7ESm9Jhn0KQCKRjnVm7S7wWDQgljO+0arKethaCnhcdaLOhL5Hha3JwCcAXPWpyyAGOvttAa0BqIFzLtTCNQZT4BQfsatochaDQS2kKQ3hUm6e2Ty6pmkdcguP97bnLqrccxdl8IpH8h5v4VJF0w1HhRArDdSN81ssLL55NDRne3pGKT2ze6g2ZVFGvaQQyBPNyN68DSgQre8sssLHkuG8vtDzxgBtEX7S5uxyyr9LosCEUDH7n1mQ5ptIgHY3Yp9EgECNQMhCZpNakGSAc4Uay2FrlBd1ufr7xKGz3YYbamtDI6gBjednbaI4cvq7kH7JvWpqY4AWNJyPNHb9aG1FByyuyD5uILAvRd0jADZPXInbLM2eUOQwHw8xXyf8UkP0pqf1A3QGnBzI24yx/cFQNfo0QgY7LNZioliU1AKGNql9QVg5TFSjEcNUSzenykWoMTgmCyKIGmBvhjpHWzhsHfZKRr25qhHguYRQX17WQWI9UYG21dxK6M+s658Ekvz+K0YSMygttSZc3cYHebRwgL2hxzFxA6jvUFqAskEMcxa2vpdwrwCdM1RAVxW8f31JmJ+axJWqQHcgLYKeCUB4jC+EYA2RfFJMK1fBWVlzcTIGrW0wTMxu87eMaWGmMT3ybTBRHIMMA9nQ7xDYI0I4g5kAmYz3JoMbnRgXdMzHeBFjFEX9oyUh4/HKaFJG7tWNBmPRR3mzISRWJBygCw2GXUiF8pIi1mriRa4KzDD1wX55YhP0AJQF6PbCiwDNG40CDHAq4yj7zVsaul7RAhTkMaI13wm3G2RLJTtWHSKTFSdCb3HmPwgJRMJzaLAHhGsrqlPUn/PB7JrDN8T8FzE3WEB+EbabwTsdqoJwgwCC5NUL6w/meUubtBaBdq3TNLYNGRGiOzdDXH6BzeK0JDpQtYEB4Q1yRYWMAAaXc9ZqOi/LNFBRdqhoVd1QevgtQbsVXVGj6zSNmOM2qODsILaItFpKkQBjP12gS0co2SMNdSF80dOwDZzo64WpSNSn2MHInKCEflD7kvVnJbVEy6yxKYtoL4XdliI1ZkiDIBfi+ZSuk3GvmVJbIGz2u5TBsEpS7ZLkxiQdicqQMkckwuBKVIIY4cBkT9WjxrQVFiXBZ6S0436rrrBMsoLF8Kq+YqJ+jw47aMtaXBJ1xiSQyzZHTZLolUGKMVpgjRmoZ6JKwA+oEiNY8Dml5CZJQKRJkhj6LLagOog3CDrDdkaxGDw5bHUMYaTujMD8bzRsIbILCTzFOdokWhstYYBANQNFfiADUCblGbtWT9tBfFQd9BwOMQAakPyAyJNYTQLVRdyoxKjAYB49f6BnMyFMCZ3mJlAtXG/1oMRqLdl5R3vLAIodQ9No/O+NRGD0HRxZmNVdxgN4CUE0amW2aWA2DFD1hUWIg0wc9ApwgE4TJa8eKRLDCgdm5F1K54bxcaHh1UDisuzERIUEAaIZbaIhVrEmhcsS9pm5wrEHAlGm0DQngcDZJFMBNwSMyAlSwHC5BopITKV4SlzlNlG2nMIoNyHbCaTP5GuOYiWYMogEPTc9y4QoVHpTGBZk1iIZgZwk57R/sYQ8c1a5sLpS+lALdA+VAkZjq0N1HibSWeZgkRx7IutuT1PcWsPtAoDLKQ6mDzCLZTetN6g7kwZOyhEsFlGbNEJoNYEtKPuYI0pHvAmjAVpwE1nQY12F2ACp99nxnZfAsZ1sak+CKesTQvLVNzRxqVrAAVHszzNU6DMyHmKCqMvttQFgwnJWjtOxldgTFTkOnfyU07LbCYGuIlGWLqhGhKboqRRkmIXOEUYUrFF3Kpj8cVTgOPRwyivkY+LUKbWaHaHLIa45zilzZZqU0q4RNWHGOeqHxpiGz0GAJF94AxwQFJdX6EaSiU6cGKAPdOj3zGCOVABK9trDmZq8FTJ9/NiKhkamVqqBg4akxki52RgAOIStsiJjoTSU5hzHbD03ZbbzEBrER1s+Yy0aUQZBLf/HuPvAyS14G/FdYy0pP0/IGa/GShpTyEfG9DeurIHiFCHFlv9bo+90GHZlgPgeycTkOvRWZ/zhHPwANvrQOnD3l+Yq/n7jGCAuIedN2GE9luAQMxi6MbiCzgsmFiRd5hR6rnwOgjHjH9IiVSiKtl87iUAoOwi7haxiRor8NrQ/PZJIiQHs3Pe4IJYJ/g4EzY6fFyx2aPDZt0F5KULUXUdq3dWLzm1N1GmDMTUL+779VqJBBcUr3JIgTKjFg2K/9tzKnSX9m/J2ZbB+XrRhGuXrbie7tWxTIJ3rSEk4dtKD/Qhv/DKfsdYzCKUAdhbw3rlysXzixMAn8+EC2fppAeVqfDkyHoB4NFFxngNaOhw+JOb3//b5o3f/Z3qD5t034LxUJBNwB8ToM4qE7hXdQdCZX58b5Gyxmzg2sow9bN5+Rx38EXKdO3eDungOQuNkQ8cCT6vBontNvXaaXe4gJdunPpgTgzzpPMM6tzl2T1eUO4B9cK/dzjdmid86dGs+2XWZxYU668FxenxPv3cZwBc448+CvOnWDgPwjM4PfW127bR7NtmjxvfsfLm608AXPw3UMcuUbLfppgSG6b66vdVD+oGSd3CuAIYU3mqAABX/PMfp33aBAm3mELlxISDPc1XHSIBPPvqG358BRDyjNNkfHlqs+TFDufvV4jE09efuCsAQPv6Fz774MZodv85UUiF/aGpjc3ntk6uU56+/gS/f+fNcq396affxmOAOF5su+wwbT0aFKarV8EgNbIFAAD4/67z5398gm/86v3TDR4kQEBeAxAQe4W6ddZ0t6jZPmJraERodjw970mV5RvTltxlJZT5KAD5vxiy8ov35X+f+fn7h/8LzbFdHUuUCJMhajA1CmPPBMHAnZl0GRCEZ299Hs/eeuP4E0T0P4CIuG7md7pgAAAAAElFTkSuQmCC"/>
54
- </defs>
55
- </svg>