@geoit/ui 0.0.2

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 (165) hide show
  1. package/AGENTS.md +25 -0
  2. package/README.md +46 -0
  3. package/ai/AGENTS.md +86 -0
  4. package/ai/README.md +44 -0
  5. package/ai/catalog.json +882 -0
  6. package/ai/components/geo-alert.md +56 -0
  7. package/ai/components/geo-back-button.md +54 -0
  8. package/ai/components/geo-breadcrumb.md +52 -0
  9. package/ai/components/geo-button.md +63 -0
  10. package/ai/components/geo-checkbox.md +54 -0
  11. package/ai/components/geo-column-picker.md +54 -0
  12. package/ai/components/geo-confirm-modal.md +70 -0
  13. package/ai/components/geo-date-picker.md +65 -0
  14. package/ai/components/geo-date-range-picker.md +64 -0
  15. package/ai/components/geo-file-picker.md +62 -0
  16. package/ai/components/geo-form-modal.md +88 -0
  17. package/ai/components/geo-icon.md +53 -0
  18. package/ai/components/geo-input.md +65 -0
  19. package/ai/components/geo-page-title.md +53 -0
  20. package/ai/components/geo-pagination.md +59 -0
  21. package/ai/components/geo-radio.md +67 -0
  22. package/ai/components/geo-row-actions.md +54 -0
  23. package/ai/components/geo-select.md +68 -0
  24. package/ai/components/geo-slider.md +56 -0
  25. package/ai/components/geo-status-tag.md +51 -0
  26. package/ai/components/geo-step-form-layout.md +81 -0
  27. package/ai/components/geo-stepper.md +63 -0
  28. package/ai/components/geo-table-filter.md +65 -0
  29. package/ai/components/geo-table-pagination.md +59 -0
  30. package/ai/components/geo-table-toolbar.md +64 -0
  31. package/ai/components/geo-table.md +98 -0
  32. package/ai/components/geo-tabs.md +62 -0
  33. package/ai/components/geo-textarea.md +59 -0
  34. package/ai/components/geo-toast.md +61 -0
  35. package/ai/components/geo-tree.md +58 -0
  36. package/ai/components/geo-typography.md +57 -0
  37. package/ai/components/geo-upload.md +78 -0
  38. package/ai/recipes.md +111 -0
  39. package/esm2022/geoit-ui.mjs +5 -0
  40. package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +58 -0
  41. package/esm2022/lib/figma/geo-alert/geo-alert.types.mjs +7 -0
  42. package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +48 -0
  43. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +33 -0
  44. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.types.mjs +2 -0
  45. package/esm2022/lib/figma/geo-button/geo-button.component.mjs +77 -0
  46. package/esm2022/lib/figma/geo-button/geo-button.types.mjs +2 -0
  47. package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +34 -0
  48. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +76 -0
  49. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.types.mjs +2 -0
  50. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +119 -0
  51. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.types.mjs +2 -0
  52. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +116 -0
  53. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.types.mjs +2 -0
  54. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +145 -0
  55. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.types.mjs +2 -0
  56. package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +153 -0
  57. package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +51 -0
  58. package/esm2022/lib/figma/geo-icon/geo-icon.types.mjs +8 -0
  59. package/esm2022/lib/figma/geo-input/geo-input.component.mjs +118 -0
  60. package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +51 -0
  61. package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +54 -0
  62. package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +95 -0
  63. package/esm2022/lib/figma/geo-radio/geo-radio.types.mjs +2 -0
  64. package/esm2022/lib/figma/geo-select/geo-select.component.mjs +113 -0
  65. package/esm2022/lib/figma/geo-select/geo-select.types.mjs +2 -0
  66. package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +43 -0
  67. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +62 -0
  68. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.types.mjs +30 -0
  69. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +157 -0
  70. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.types.mjs +2 -0
  71. package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +77 -0
  72. package/esm2022/lib/figma/geo-stepper/geo-stepper.types.mjs +2 -0
  73. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +65 -0
  74. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.mjs +31 -0
  75. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.mjs +2 -0
  76. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +64 -0
  77. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.mjs +24 -0
  78. package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +195 -0
  79. package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +118 -0
  80. package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +68 -0
  81. package/esm2022/lib/figma/geo-table/geo-table.component.mjs +381 -0
  82. package/esm2022/lib/figma/geo-table/geo-table.types.mjs +4 -0
  83. package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +94 -0
  84. package/esm2022/lib/figma/geo-tabs/geo-tabs.types.mjs +2 -0
  85. package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +85 -0
  86. package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +57 -0
  87. package/esm2022/lib/figma/geo-toast/geo-toast.service.mjs +116 -0
  88. package/esm2022/lib/figma/geo-toast/geo-toast.types.mjs +13 -0
  89. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +52 -0
  90. package/esm2022/lib/figma/geo-tree/geo-tree.types.mjs +2 -0
  91. package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +112 -0
  92. package/esm2022/lib/figma/geo-typography/geo-typography.types.mjs +96 -0
  93. package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +218 -0
  94. package/esm2022/lib/figma/geo-upload/geo-upload.types.mjs +30 -0
  95. package/esm2022/lib/figma/index.mjs +56 -0
  96. package/esm2022/lib/ng-zorro/ng-zorro-antd.module.mjs +293 -0
  97. package/esm2022/lib/styles/tokens.mjs +144 -0
  98. package/esm2022/public-api.mjs +7 -0
  99. package/fesm2022/geoit-ui.mjs +3805 -0
  100. package/fesm2022/geoit-ui.mjs.map +1 -0
  101. package/index.d.ts +5 -0
  102. package/lib/figma/geo-alert/geo-alert.component.d.ts +17 -0
  103. package/lib/figma/geo-alert/geo-alert.types.d.ts +2 -0
  104. package/lib/figma/geo-back-button/geo-back-button.component.d.ts +18 -0
  105. package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +12 -0
  106. package/lib/figma/geo-breadcrumb/geo-breadcrumb.types.d.ts +10 -0
  107. package/lib/figma/geo-button/geo-button.component.d.ts +27 -0
  108. package/lib/figma/geo-button/geo-button.types.d.ts +4 -0
  109. package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +12 -0
  110. package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +24 -0
  111. package/lib/figma/geo-confirm-modal/geo-confirm-modal.types.d.ts +5 -0
  112. package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +35 -0
  113. package/lib/figma/geo-date-picker/geo-date-picker.types.d.ts +2 -0
  114. package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +34 -0
  115. package/lib/figma/geo-date-range-picker/geo-date-range-picker.types.d.ts +2 -0
  116. package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +39 -0
  117. package/lib/figma/geo-file-picker/geo-file-picker.types.d.ts +4 -0
  118. package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +57 -0
  119. package/lib/figma/geo-icon/geo-icon.component.d.ts +19 -0
  120. package/lib/figma/geo-icon/geo-icon.types.d.ts +3 -0
  121. package/lib/figma/geo-input/geo-input.component.d.ts +37 -0
  122. package/lib/figma/geo-page-title/geo-page-title.component.d.ts +22 -0
  123. package/lib/figma/geo-pagination/geo-pagination.component.d.ts +21 -0
  124. package/lib/figma/geo-radio/geo-radio.component.d.ts +31 -0
  125. package/lib/figma/geo-radio/geo-radio.types.d.ts +9 -0
  126. package/lib/figma/geo-select/geo-select.component.d.ts +33 -0
  127. package/lib/figma/geo-select/geo-select.types.d.ts +7 -0
  128. package/lib/figma/geo-slider/geo-slider.component.d.ts +17 -0
  129. package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +18 -0
  130. package/lib/figma/geo-status-tag/geo-status-tag.types.d.ts +13 -0
  131. package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +67 -0
  132. package/lib/figma/geo-step-form-layout/geo-step-form-layout.types.d.ts +9 -0
  133. package/lib/figma/geo-stepper/geo-stepper.component.d.ts +42 -0
  134. package/lib/figma/geo-stepper/geo-stepper.types.d.ts +9 -0
  135. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +20 -0
  136. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.d.ts +5 -0
  137. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.d.ts +17 -0
  138. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +21 -0
  139. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.d.ts +13 -0
  140. package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +75 -0
  141. package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +33 -0
  142. package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +24 -0
  143. package/lib/figma/geo-table/geo-table.component.d.ts +113 -0
  144. package/lib/figma/geo-table/geo-table.types.d.ts +47 -0
  145. package/lib/figma/geo-tabs/geo-tabs.component.d.ts +31 -0
  146. package/lib/figma/geo-tabs/geo-tabs.types.d.ts +7 -0
  147. package/lib/figma/geo-textarea/geo-textarea.component.d.ts +27 -0
  148. package/lib/figma/geo-toast/geo-toast.component.d.ts +23 -0
  149. package/lib/figma/geo-toast/geo-toast.service.d.ts +33 -0
  150. package/lib/figma/geo-toast/geo-toast.types.d.ts +45 -0
  151. package/lib/figma/geo-tree/geo-tree.component.d.ts +23 -0
  152. package/lib/figma/geo-tree/geo-tree.types.d.ts +12 -0
  153. package/lib/figma/geo-typography/geo-typography.component.d.ts +35 -0
  154. package/lib/figma/geo-typography/geo-typography.types.d.ts +12 -0
  155. package/lib/figma/geo-upload/geo-upload.component.d.ts +59 -0
  156. package/lib/figma/geo-upload/geo-upload.types.d.ts +13 -0
  157. package/lib/figma/index.d.ts +55 -0
  158. package/lib/ng-zorro/ng-zorro-antd.module.d.ts +76 -0
  159. package/lib/styles/tokens.d.ts +184 -0
  160. package/package.json +38 -0
  161. package/public-api.d.ts +3 -0
  162. package/src/lib/styles/design-tokens.scss +143 -0
  163. package/src/lib/styles/geo-toast-notification.scss +129 -0
  164. package/src/lib/styles/scrollbar.scss +38 -0
  165. package/src/lib/styles/theme.scss +153 -0
package/ai/recipes.md ADDED
@@ -0,0 +1,111 @@
1
+ # GEO UI — Recipes (AI)
2
+
3
+ Copy-paste patterns for common screens. Adjust labels/bindings only.
4
+
5
+ ## 1. Form modal (single step)
6
+
7
+ ```html
8
+ <geo-button appearance="primary" color="brand" (clicked)="open = true">Mở</geo-button>
9
+
10
+ <geo-form-modal
11
+ [open]="open"
12
+ title="Thêm mới danh mục"
13
+ cancelText="Hủy bỏ"
14
+ okText="Lưu"
15
+ [width]="720"
16
+ (openChange)="open = $event"
17
+ (ok)="onSave()"
18
+ (cancel)="open = false"
19
+ >
20
+ <div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;">
21
+ <geo-input label="Mã" [required]="true" [block]="true" [(ngModel)]="code"></geo-input>
22
+ <geo-input label="Tên" [required]="true" [block]="true" [(ngModel)]="name"></geo-input>
23
+ </div>
24
+ </geo-form-modal>
25
+ ```
26
+
27
+ ## 2. Form modal + steps (multi-step dialog)
28
+
29
+ ```html
30
+ <geo-form-modal
31
+ [open]="open"
32
+ title="Lập phiếu đăng ký khai thác"
33
+ [cancelText]="activeIndex === 0 ? 'Hủy bỏ' : 'Quay lại'"
34
+ [cancelIcon]="activeIndex === 0 ? undefined : 'left'"
35
+ [okText]="isLast ? 'Gửi phiếu đăng ký' : 'Tiếp theo'"
36
+ [okIcon]="isLast ? undefined : 'right'"
37
+ okIconPlacement="end"
38
+ [width]="800"
39
+ (ok)="onNext()"
40
+ (cancel)="onBackOrClose()"
41
+ (openChange)="open = $event"
42
+ >
43
+ <geo-stepper
44
+ [steps]="steps"
45
+ [activeIndex]="activeIndex"
46
+ orientation="horizontal"
47
+ [clickable]="false"
48
+ ></geo-stepper>
49
+
50
+ @if (activeIndex === 0) {
51
+ <!-- step 1 form fields -->
52
+ } @else {
53
+ <!-- step 2 confirm -->
54
+ }
55
+ </geo-form-modal>
56
+ ```
57
+
58
+ ```ts
59
+ steps = [
60
+ { key: 'info', label: '1. Thông tin phiếu mượn' },
61
+ { key: 'confirm', label: '2. Xác nhận yêu cầu' },
62
+ ];
63
+ ```
64
+
65
+ ## 3. Page header: breadcrumb + title
66
+
67
+ ```html
68
+ <div style="display:flex;flex-direction:column;gap:16px;">
69
+ <geo-breadcrumb [items]="[
70
+ { label: 'Trang chủ', link: '/' },
71
+ { label: 'Tra cứu hồ sơ', link: '/tra-cuu' },
72
+ { label: 'Xem chi tiết hồ sơ' }
73
+ ]"></geo-breadcrumb>
74
+ <geo-page-title title="Thông tin chi tiết hồ sơ"></geo-page-title>
75
+ </div>
76
+ ```
77
+
78
+ ## 4. Toast after action
79
+
80
+ ```ts
81
+ import { GeoToastService } from '@geoit/ui';
82
+
83
+ constructor(private toast: GeoToastService) {}
84
+
85
+ save(): void {
86
+ this.toast.success('Thành công!', 'Đã lưu hồ sơ.');
87
+ }
88
+ ```
89
+
90
+ ## 5. Table list (minimal)
91
+
92
+ ```html
93
+ <geo-table-toolbar [resultCount]="total" [showAdd]="true" (addClick)="openCreate()"></geo-table-toolbar>
94
+
95
+ <geo-table
96
+ [columns]="columns"
97
+ [data]="rows"
98
+ [total]="total"
99
+ [pageIndex]="pageIndex"
100
+ [pageSize]="pageSize"
101
+ (pageIndexChange)="pageIndex = $event; load()"
102
+ (pageSizeChange)="pageSize = $event; load()"
103
+ ></geo-table>
104
+ ```
105
+
106
+ ## 6. Typography + status
107
+
108
+ ```html
109
+ <geo-typography variant="h4" [strong]="true">1. Thông tin cá nhân</geo-typography>
110
+ <geo-status-tag status="success" label="Đã duyệt"></geo-status-tag>
111
+ ```
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvaXQtdWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2dlb2l0LXVpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NzIconModule } from 'ng-zorro-antd/icon';
4
+ import { UI_ALERT_DEFAULT_TITLES } from './geo-alert.types';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "ng-zorro-antd/icon";
7
+ export class GeoAlertComponent {
8
+ type = 'info';
9
+ title = '';
10
+ message = '';
11
+ closable = true;
12
+ visible = true;
13
+ showIcon = true;
14
+ closed = new EventEmitter();
15
+ get displayTitle() {
16
+ return this.title || UI_ALERT_DEFAULT_TITLES[this.type];
17
+ }
18
+ get iconType() {
19
+ switch (this.type) {
20
+ case 'success':
21
+ return 'check-circle';
22
+ case 'error':
23
+ return 'close-circle';
24
+ case 'warning':
25
+ return 'exclamation-circle';
26
+ default:
27
+ return 'info-circle';
28
+ }
29
+ }
30
+ onClose() {
31
+ this.visible = false;
32
+ this.closed.emit();
33
+ }
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoAlertComponent, isStandalone: true, selector: "geo-alert", inputs: { type: "type", title: "title", message: "message", closable: "closable", visible: "visible", showIcon: "showIcon" }, outputs: { closed: "closed" }, host: { properties: { "class.geo-alert-host--hidden": "!visible" }, classAttribute: "geo-alert-host" }, ngImport: i0, template: "@if (visible) {\n <div class=\"geo-alert\" [class]=\"'geo-alert--' + type\" role=\"alert\">\n <div class=\"geo-alert__main\">\n @if (showIcon) {\n <span class=\"geo-alert__icon\" nz-icon [nzType]=\"iconType\" nzTheme=\"outline\"></span>\n }\n\n <div class=\"geo-alert__content\">\n <p class=\"geo-alert__title\">{{ displayTitle }}</p>\n @if (message) {\n <p class=\"geo-alert__message\">{{ message }}</p>\n }\n </div>\n </div>\n\n @if (closable) {\n <button type=\"button\" class=\"geo-alert__close\" aria-label=\"\u0110\u00F3ng th\u00F4ng b\u00E1o\" (click)=\"onClose()\">\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n}\n", styles: ["@charset \"UTF-8\";geo-alert.geo-alert-host,.geo-alert-host{display:block;width:100%}.geo-alert-host--hidden{display:none}.geo-alert{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;width:100%;padding:16px;border:1px solid transparent;border-radius:var(--geo-radius);box-sizing:border-box}.geo-alert__main{display:flex;align-items:flex-start;gap:8px;min-width:0;flex:1 1 auto}.geo-alert__icon{display:inline-flex;flex-shrink:0;width:24px;height:24px;font-size:24px;line-height:1}.geo-alert__content{display:flex;flex-direction:column;gap:0;min-width:0}.geo-alert__title,.geo-alert__message{margin:0;font-size:var(--geo-font-size-lg);line-height:24px}.geo-alert__title{font-weight:700}.geo-alert__message{font-weight:400}.geo-alert__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;cursor:pointer;flex-shrink:0}.geo-alert--success{background:var(--geo-color-success-light);border-color:var(--geo-color-success-default)}.geo-alert--success .geo-alert__title,.geo-alert--success .geo-alert__message,.geo-alert--success .geo-alert__icon{color:var(--geo-color-success-dark)}.geo-alert--success .geo-alert__close{color:var(--geo-color-success-default)}.geo-alert--error{background:var(--geo-color-error-light);border-color:var(--geo-color-error-default)}.geo-alert--error .geo-alert__title,.geo-alert--error .geo-alert__message,.geo-alert--error .geo-alert__icon{color:var(--geo-color-error-default)}.geo-alert--error .geo-alert__close{color:var(--geo-color-error-dark)}.geo-alert--warning{background:var(--geo-color-warning-light);border-color:var(--geo-color-warning-default)}.geo-alert--warning .geo-alert__title,.geo-alert--warning .geo-alert__message{color:var(--geo-color-warning-dark)}.geo-alert--warning .geo-alert__icon,.geo-alert--warning .geo-alert__close{color:var(--geo-color-warning-default)}.geo-alert--info{background:var(--geo-color-info-light);border-color:var(--geo-color-info-default)}.geo-alert--info .geo-alert__title,.geo-alert--info .geo-alert__message,.geo-alert--info .geo-alert__icon{color:var(--geo-color-info-dark)}.geo-alert--info .geo-alert__close{color:var(--geo-color-info-default)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], encapsulation: i0.ViewEncapsulation.None });
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoAlertComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'geo-alert', standalone: true, imports: [CommonModule, NzIconModule], encapsulation: ViewEncapsulation.None, host: {
40
+ class: 'geo-alert-host',
41
+ '[class.geo-alert-host--hidden]': '!visible',
42
+ }, template: "@if (visible) {\n <div class=\"geo-alert\" [class]=\"'geo-alert--' + type\" role=\"alert\">\n <div class=\"geo-alert__main\">\n @if (showIcon) {\n <span class=\"geo-alert__icon\" nz-icon [nzType]=\"iconType\" nzTheme=\"outline\"></span>\n }\n\n <div class=\"geo-alert__content\">\n <p class=\"geo-alert__title\">{{ displayTitle }}</p>\n @if (message) {\n <p class=\"geo-alert__message\">{{ message }}</p>\n }\n </div>\n </div>\n\n @if (closable) {\n <button type=\"button\" class=\"geo-alert__close\" aria-label=\"\u0110\u00F3ng th\u00F4ng b\u00E1o\" (click)=\"onClose()\">\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n}\n", styles: ["@charset \"UTF-8\";geo-alert.geo-alert-host,.geo-alert-host{display:block;width:100%}.geo-alert-host--hidden{display:none}.geo-alert{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;width:100%;padding:16px;border:1px solid transparent;border-radius:var(--geo-radius);box-sizing:border-box}.geo-alert__main{display:flex;align-items:flex-start;gap:8px;min-width:0;flex:1 1 auto}.geo-alert__icon{display:inline-flex;flex-shrink:0;width:24px;height:24px;font-size:24px;line-height:1}.geo-alert__content{display:flex;flex-direction:column;gap:0;min-width:0}.geo-alert__title,.geo-alert__message{margin:0;font-size:var(--geo-font-size-lg);line-height:24px}.geo-alert__title{font-weight:700}.geo-alert__message{font-weight:400}.geo-alert__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;cursor:pointer;flex-shrink:0}.geo-alert--success{background:var(--geo-color-success-light);border-color:var(--geo-color-success-default)}.geo-alert--success .geo-alert__title,.geo-alert--success .geo-alert__message,.geo-alert--success .geo-alert__icon{color:var(--geo-color-success-dark)}.geo-alert--success .geo-alert__close{color:var(--geo-color-success-default)}.geo-alert--error{background:var(--geo-color-error-light);border-color:var(--geo-color-error-default)}.geo-alert--error .geo-alert__title,.geo-alert--error .geo-alert__message,.geo-alert--error .geo-alert__icon{color:var(--geo-color-error-default)}.geo-alert--error .geo-alert__close{color:var(--geo-color-error-dark)}.geo-alert--warning{background:var(--geo-color-warning-light);border-color:var(--geo-color-warning-default)}.geo-alert--warning .geo-alert__title,.geo-alert--warning .geo-alert__message{color:var(--geo-color-warning-dark)}.geo-alert--warning .geo-alert__icon,.geo-alert--warning .geo-alert__close{color:var(--geo-color-warning-default)}.geo-alert--info{background:var(--geo-color-info-light);border-color:var(--geo-color-info-default)}.geo-alert--info .geo-alert__title,.geo-alert--info .geo-alert__message,.geo-alert--info .geo-alert__icon{color:var(--geo-color-info-dark)}.geo-alert--info .geo-alert__close{color:var(--geo-color-info-default)}\n"] }]
43
+ }], propDecorators: { type: [{
44
+ type: Input
45
+ }], title: [{
46
+ type: Input
47
+ }], message: [{
48
+ type: Input
49
+ }], closable: [{
50
+ type: Input
51
+ }], visible: [{
52
+ type: Input
53
+ }], showIcon: [{
54
+ type: Input
55
+ }], closed: [{
56
+ type: Output
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWFsZXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1hbGVydC9nZW8tYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWFsZXJ0L2dlby1hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBYzFFLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsSUFBSSxHQUFpQixNQUFNLENBQUM7SUFDNUIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDZixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWYsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFNUMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssT0FBTztnQkFDVixPQUFPLGNBQWMsQ0FBQztZQUN4QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxvQkFBb0IsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7d0dBOUJVLGlCQUFpQjs0RkFBakIsaUJBQWlCLDBVQ3ZCOUIsa3ZCQXNCQSx3dUVEUlksWUFBWSw4QkFBRSxZQUFZOzs0RkFTekIsaUJBQWlCO2tCQVo3QixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSxnQkFBZ0I7d0JBQ3ZCLGdDQUFnQyxFQUFFLFVBQVU7cUJBQzdDOzhCQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgVUlfQUxFUlRfREVGQVVMVF9USVRMRVMsIEdlb0FsZXJ0VHlwZSB9IGZyb20gJy4vZ2VvLWFsZXJ0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLWFsZXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTnpJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tYWxlcnQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdnZW8tYWxlcnQtaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8tYWxlcnQtaG9zdC0taGlkZGVuXSc6ICchdmlzaWJsZScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb0FsZXJ0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgdHlwZTogR2VvQWxlcnRUeXBlID0gJ2luZm8nO1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIGNsb3NhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgdmlzaWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dJY29uID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBkaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZSB8fCBVSV9BTEVSVF9ERUZBVUxUX1RJVExFU1t0aGlzLnR5cGVdO1xuICB9XG5cbiAgZ2V0IGljb25UeXBlKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ2NoZWNrLWNpcmNsZSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY2xvc2UtY2lyY2xlJztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2V4Y2xhbWF0aW9uLWNpcmNsZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2luZm8tY2lyY2xlJztcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxufVxuIiwiQGlmICh2aXNpYmxlKSB7XG4gIDxkaXYgY2xhc3M9XCJnZW8tYWxlcnRcIiBbY2xhc3NdPVwiJ2dlby1hbGVydC0tJyArIHR5cGVcIiByb2xlPVwiYWxlcnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWFsZXJ0X19tYWluXCI+XG4gICAgICBAaWYgKHNob3dJY29uKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLWFsZXJ0X19pY29uXCIgbnotaWNvbiBbbnpUeXBlXT1cImljb25UeXBlXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnZW8tYWxlcnRfX2NvbnRlbnRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJnZW8tYWxlcnRfX3RpdGxlXCI+e3sgZGlzcGxheVRpdGxlIH19PC9wPlxuICAgICAgICBAaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImdlby1hbGVydF9fbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChjbG9zYWJsZSkge1xuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJnZW8tYWxlcnRfX2Nsb3NlXCIgYXJpYS1sYWJlbD1cIsSQw7NuZyB0aMO0bmcgYsOhb1wiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJjbG9zZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export const UI_ALERT_DEFAULT_TITLES = {
2
+ success: 'Thành công!',
3
+ error: 'Lỗi!',
4
+ warning: 'Cảnh báo!',
5
+ info: 'Thông tin!',
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWFsZXJ0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWFsZXJ0L2dlby1hbGVydC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBaUM7SUFDbkUsT0FBTyxFQUFFLGFBQWE7SUFDdEIsS0FBSyxFQUFFLE1BQU07SUFDYixPQUFPLEVBQUUsV0FBVztJQUNwQixJQUFJLEVBQUUsWUFBWTtDQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgR2VvQWxlcnRUeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpbmZvJztcblxuZXhwb3J0IGNvbnN0IFVJX0FMRVJUX0RFRkFVTFRfVElUTEVTOiBSZWNvcmQ8R2VvQWxlcnRUeXBlLCBzdHJpbmc+ID0ge1xuICBzdWNjZXNzOiAnVGjDoG5oIGPDtG5nIScsXG4gIGVycm9yOiAnTOG7l2khJyxcbiAgd2FybmluZzogJ0PhuqNuaCBiw6FvIScsXG4gIGluZm86ICdUaMO0bmcgdGluIScsXG59O1xuIl19
@@ -0,0 +1,48 @@
1
+ import { CommonModule, Location } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, inject, } from '@angular/core';
3
+ import { NzIconModule } from 'ng-zorro-antd/icon';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ng-zorro-antd/icon";
6
+ /**
7
+ * Nút quay lại dùng chung cho các page form/detail.
8
+ * Mặc định `history.back()` (−1). Set `[historyBack]="false"` nếu parent tự navigate.
9
+ */
10
+ export class GeoBackButtonComponent {
11
+ location = inject(Location);
12
+ ariaLabel = 'Quay lại';
13
+ title = 'Quay lại';
14
+ disabled = false;
15
+ /** `true` (mặc định): `Location.back()` — về trang trước trong history. */
16
+ historyBack = true;
17
+ clicked = new EventEmitter();
18
+ onClick(event) {
19
+ if (this.disabled) {
20
+ return;
21
+ }
22
+ event.preventDefault();
23
+ event.stopPropagation();
24
+ this.clicked.emit(event);
25
+ if (this.historyBack) {
26
+ this.location.back();
27
+ }
28
+ }
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoBackButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GeoBackButtonComponent, isStandalone: true, selector: "geo-back-button", inputs: { ariaLabel: "ariaLabel", title: "title", disabled: "disabled", historyBack: "historyBack" }, outputs: { clicked: "clicked" }, host: { classAttribute: "geo-back-button-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-back-button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.title]=\"title || ariaLabel\"\n [disabled]=\"disabled\"\n (click)=\"onClick($event)\"\n>\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\" aria-hidden=\"true\"></span>\n</button>\n", styles: [":host,.geo-back-button-host{display:inline-flex;flex-shrink:0;position:relative;z-index:2;pointer-events:auto}.geo-back-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--geo-radius);background:var(--geo-color-primary-surface-light);color:var(--geo-color-primary-default);cursor:pointer;pointer-events:auto;transition:background-color .15s ease}.geo-back-button .anticon{font-size:16px;pointer-events:none}.geo-back-button:hover:not(:disabled){background:var(--geo-color-primary-surface-light)}.geo-back-button:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px}.geo-back-button:disabled{opacity:.45;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoBackButtonComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'geo-back-button', standalone: true, imports: [CommonModule, NzIconModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
35
+ class: 'geo-back-button-host',
36
+ }, template: "<button\n type=\"button\"\n class=\"geo-back-button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.title]=\"title || ariaLabel\"\n [disabled]=\"disabled\"\n (click)=\"onClick($event)\"\n>\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\" aria-hidden=\"true\"></span>\n</button>\n", styles: [":host,.geo-back-button-host{display:inline-flex;flex-shrink:0;position:relative;z-index:2;pointer-events:auto}.geo-back-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--geo-radius);background:var(--geo-color-primary-surface-light);color:var(--geo-color-primary-default);cursor:pointer;pointer-events:auto;transition:background-color .15s ease}.geo-back-button .anticon{font-size:16px;pointer-events:none}.geo-back-button:hover:not(:disabled){background:var(--geo-color-primary-surface-light)}.geo-back-button:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px}.geo-back-button:disabled{opacity:.45;cursor:not-allowed}\n"] }]
37
+ }], propDecorators: { ariaLabel: [{
38
+ type: Input
39
+ }], title: [{
40
+ type: Input
41
+ }], disabled: [{
42
+ type: Input
43
+ }], historyBack: [{
44
+ type: Input
45
+ }], clicked: [{
46
+ type: Output
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWJhY2stYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1iYWNrLWJ1dHRvbi9nZW8tYmFjay1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWJhY2stYnV0dG9uL2dlby1iYWNrLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUVsRDs7O0dBR0c7QUFZSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2hCLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUN2QixLQUFLLEdBQUcsVUFBVSxDQUFDO0lBQ25CLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsMkVBQTJFO0lBQ2xFLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFbEIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFbkQsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO3dHQXZCVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixvUUMxQm5DLHFTQVVBLHV4QkRRWSxZQUFZLDhCQUFFLFlBQVk7OzRGQVF6QixzQkFBc0I7a0JBWGxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5Qjs4QkFLUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcblxuLyoqXG4gKiBOw7p0IHF1YXkgbOG6oWkgZMO5bmcgY2h1bmcgY2hvIGPDoWMgcGFnZSBmb3JtL2RldGFpbC5cbiAqIE3hurdjIMSR4buLbmggYGhpc3RvcnkuYmFjaygpYCAo4oiSMSkuIFNldCBgW2hpc3RvcnlCYWNrXT1cImZhbHNlXCJgIG7hur91IHBhcmVudCB04buxIG5hdmlnYXRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tYmFjay1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOekljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWJhY2stYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1iYWNrLWJ1dHRvbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdnZW8tYmFjay1idXR0b24taG9zdCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb0JhY2tCdXR0b25Db21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcblxuICBASW5wdXQoKSBhcmlhTGFiZWwgPSAnUXVheSBs4bqhaSc7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ1F1YXkgbOG6oWknO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKiogYHRydWVgICht4bq3YyDEkeG7i25oKTogYExvY2F0aW9uLmJhY2soKWAg4oCUIHbhu4EgdHJhbmcgdHLGsOG7m2MgdHJvbmcgaGlzdG9yeS4gKi9cbiAgQElucHV0KCkgaGlzdG9yeUJhY2sgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jbGlja2VkLmVtaXQoZXZlbnQpO1xuXG4gICAgaWYgKHRoaXMuaGlzdG9yeUJhY2spIHtcbiAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJnZW8tYmFjay1idXR0b25cIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gIFthdHRyLnRpdGxlXT1cInRpdGxlIHx8IGFyaWFMYWJlbFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuPlxuICA8c3BhbiBuei1pY29uIG56VHlwZT1cImFycm93LWxlZnRcIiBuelRoZW1lPVwib3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
@@ -0,0 +1,33 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RouterModule } from '@angular/router';
4
+ import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
5
+ import { NzIconModule } from 'ng-zorro-antd/icon';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "ng-zorro-antd/breadcrumb";
9
+ import * as i3 from "ng-zorro-antd/icon";
10
+ /**
11
+ * Breadcrumb GEO — dựa trên `nz-breadcrumb`.
12
+ * Item thường: neutral gray; item active (cuối): primary + semibold.
13
+ */
14
+ export class GeoBreadcrumbComponent {
15
+ items = [];
16
+ isActive(item, index) {
17
+ if (item.active != null) {
18
+ return item.active;
19
+ }
20
+ return index === this.items.length - 1;
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoBreadcrumbComponent, isStandalone: true, selector: "geo-breadcrumb", inputs: { items: "items" }, host: { classAttribute: "geo-breadcrumb-host" }, ngImport: i0, template: "<nav class=\"geo-breadcrumb\" aria-label=\"Breadcrumb\">\n <nz-breadcrumb class=\"geo-breadcrumb__antd\" [nzSeparator]=\"separatorTpl\">\n @for (item of items; track $index) {\n <nz-breadcrumb-item>\n @if (item.link && !isActive(item, $index)) {\n <a\n class=\"geo-breadcrumb__link\"\n [routerLink]=\"item.link\"\n [queryParams]=\"item.queryParams || null\"\n >\n {{ item.label }}\n </a>\n } @else {\n <span\n class=\"geo-breadcrumb__text\"\n [class.geo-breadcrumb__text--active]=\"isActive(item, $index)\"\n [attr.aria-current]=\"isActive(item, $index) ? 'page' : null\"\n >\n {{ item.label }}\n </span>\n }\n </nz-breadcrumb-item>\n }\n </nz-breadcrumb>\n</nav>\n\n<ng-template #separatorTpl>\n <span class=\"geo-breadcrumb__separator\" nz-icon nzType=\"right\" nzTheme=\"outline\"></span>\n</ng-template>\n", styles: ["geo-breadcrumb.geo-breadcrumb-host,.geo-breadcrumb-host{display:block;background:transparent;font-family:var(--geo-font-family)}.geo-breadcrumb__antd.ant-breadcrumb{font-size:var(--geo-font-size-body);line-height:var(--geo-line-height-body);color:var(--geo-color-neutral-500)}.geo-breadcrumb__antd.ant-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0}.geo-breadcrumb__antd.ant-breadcrumb .ant-breadcrumb-separator{margin:0 8px;color:var(--geo-color-neutral-500)}.geo-breadcrumb__separator{font-size:10px;color:var(--geo-color-neutral-500)}.geo-breadcrumb__link{color:var(--geo-color-neutral-500);font-weight:var(--geo-font-weight-regular);text-decoration:none;transition:color .15s ease}.geo-breadcrumb__link:hover{color:var(--geo-color-primary-default)}.geo-breadcrumb__text{color:var(--geo-color-neutral-500);font-weight:var(--geo-font-weight-regular)}.geo-breadcrumb__text--active{color:var(--geo-color-primary-default);font-weight:var(--geo-font-weight-semibold)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NzBreadCrumbModule }, { kind: "component", type: i2.NzBreadCrumbComponent, selector: "nz-breadcrumb", inputs: ["nzAutoGenerate", "nzSeparator", "nzRouteLabel", "nzRouteLabelFn", "nzRouteFn"], exportAs: ["nzBreadcrumb"] }, { kind: "component", type: i2.NzBreadCrumbItemComponent, selector: "nz-breadcrumb-item", inputs: ["nzOverlay"], exportAs: ["nzBreadcrumbItem"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], encapsulation: i0.ViewEncapsulation.None });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoBreadcrumbComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'geo-breadcrumb', standalone: true, imports: [CommonModule, RouterModule, NzBreadCrumbModule, NzIconModule], encapsulation: ViewEncapsulation.None, host: {
28
+ class: 'geo-breadcrumb-host',
29
+ }, template: "<nav class=\"geo-breadcrumb\" aria-label=\"Breadcrumb\">\n <nz-breadcrumb class=\"geo-breadcrumb__antd\" [nzSeparator]=\"separatorTpl\">\n @for (item of items; track $index) {\n <nz-breadcrumb-item>\n @if (item.link && !isActive(item, $index)) {\n <a\n class=\"geo-breadcrumb__link\"\n [routerLink]=\"item.link\"\n [queryParams]=\"item.queryParams || null\"\n >\n {{ item.label }}\n </a>\n } @else {\n <span\n class=\"geo-breadcrumb__text\"\n [class.geo-breadcrumb__text--active]=\"isActive(item, $index)\"\n [attr.aria-current]=\"isActive(item, $index) ? 'page' : null\"\n >\n {{ item.label }}\n </span>\n }\n </nz-breadcrumb-item>\n }\n </nz-breadcrumb>\n</nav>\n\n<ng-template #separatorTpl>\n <span class=\"geo-breadcrumb__separator\" nz-icon nzType=\"right\" nzTheme=\"outline\"></span>\n</ng-template>\n", styles: ["geo-breadcrumb.geo-breadcrumb-host,.geo-breadcrumb-host{display:block;background:transparent;font-family:var(--geo-font-family)}.geo-breadcrumb__antd.ant-breadcrumb{font-size:var(--geo-font-size-body);line-height:var(--geo-line-height-body);color:var(--geo-color-neutral-500)}.geo-breadcrumb__antd.ant-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0}.geo-breadcrumb__antd.ant-breadcrumb .ant-breadcrumb-separator{margin:0 8px;color:var(--geo-color-neutral-500)}.geo-breadcrumb__separator{font-size:10px;color:var(--geo-color-neutral-500)}.geo-breadcrumb__link{color:var(--geo-color-neutral-500);font-weight:var(--geo-font-weight-regular);text-decoration:none;transition:color .15s ease}.geo-breadcrumb__link:hover{color:var(--geo-color-primary-default)}.geo-breadcrumb__text{color:var(--geo-color-neutral-500);font-weight:var(--geo-font-weight-regular)}.geo-breadcrumb__text--active{color:var(--geo-color-primary-default);font-weight:var(--geo-font-weight-semibold)}\n"] }]
30
+ }], propDecorators: { items: [{
31
+ type: Input
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWJyZWFkY3J1bWIvZ2VvLWJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWJyZWFkY3J1bWIvZ2VvLWJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBR2xEOzs7R0FHRztBQVlILE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsS0FBSyxHQUF3QixFQUFFLENBQUM7SUFFekMsUUFBUSxDQUFDLElBQXVCLEVBQUUsS0FBYTtRQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQzt3R0FSVSxzQkFBc0I7NEZBQXRCLHNCQUFzQix1SkN0Qm5DLGkrQkE2QkEsdWlDRGZZLFlBQVksOEJBQUUsWUFBWSwrUUFBRSxrQkFBa0Isd1hBQUUsWUFBWTs7NEZBUTNELHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxpQkFHeEQsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUscUJBQXFCO3FCQUM3Qjs4QkFHUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOekJyZWFkQ3J1bWJNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2JyZWFkY3J1bWInO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IEdlb0JyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi9nZW8tYnJlYWRjcnVtYi50eXBlcyc7XG5cbi8qKlxuICogQnJlYWRjcnVtYiBHRU8g4oCUIGThu7FhIHRyw6puIGBuei1icmVhZGNydW1iYC5cbiAqIEl0ZW0gdGjGsOG7nW5nOiBuZXV0cmFsIGdyYXk7IGl0ZW0gYWN0aXZlIChjdeG7kWkpOiBwcmltYXJ5ICsgc2VtaWJvbGQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1icmVhZGNydW1iJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBOekJyZWFkQ3J1bWJNb2R1bGUsIE56SWNvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1icmVhZGNydW1iLWhvc3QnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9CcmVhZGNydW1iQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXRlbXM6IEdlb0JyZWFkY3J1bWJJdGVtW10gPSBbXTtcblxuICBpc0FjdGl2ZShpdGVtOiBHZW9CcmVhZGNydW1iSXRlbSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChpdGVtLmFjdGl2ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gaXRlbS5hY3RpdmU7XG4gICAgfVxuICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICB9XG59XG4iLCI8bmF2IGNsYXNzPVwiZ2VvLWJyZWFkY3J1bWJcIiBhcmlhLWxhYmVsPVwiQnJlYWRjcnVtYlwiPlxuICA8bnotYnJlYWRjcnVtYiBjbGFzcz1cImdlby1icmVhZGNydW1iX19hbnRkXCIgW256U2VwYXJhdG9yXT1cInNlcGFyYXRvclRwbFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPG56LWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgQGlmIChpdGVtLmxpbmsgJiYgIWlzQWN0aXZlKGl0ZW0sICRpbmRleCkpIHtcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tYnJlYWRjcnVtYl9fbGlua1wiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIml0ZW0ucXVlcnlQYXJhbXMgfHwgbnVsbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZ2VvLWJyZWFkY3J1bWJfX3RleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmdlby1icmVhZGNydW1iX190ZXh0LS1hY3RpdmVdPVwiaXNBY3RpdmUoaXRlbSwgJGluZGV4KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNBY3RpdmUoaXRlbSwgJGluZGV4KSA/ICdwYWdlJyA6IG51bGxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvbnotYnJlYWRjcnVtYi1pdGVtPlxuICAgIH1cbiAgPC9uei1icmVhZGNydW1iPlxuPC9uYXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2VwYXJhdG9yVHBsPlxuICA8c3BhbiBjbGFzcz1cImdlby1icmVhZGNydW1iX19zZXBhcmF0b3JcIiBuei1pY29uIG56VHlwZT1cInJpZ2h0XCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWJyZWFkY3J1bWIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tYnJlYWRjcnVtYi9nZW8tYnJlYWRjcnVtYi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHZW9CcmVhZGNydW1iSXRlbSB7XG4gIC8qKiBIaeG7g24gdGjhu4sgdHLDqm4gYnJlYWRjcnVtYi4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqIFJvdXRlciBsaW5rIChvcHRpb25hbCkg4oCUIGLhu48gdHLhu5FuZyA9IGtow7RuZyBwaOG6o2kgbGluay4gKi9cbiAgbGluaz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAvKiogUXVlcnkgcGFyYW1zIGtoaSBkw7luZyByb3V0ZXJMaW5rLiAqL1xuICBxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAvKiogxJDDoW5oIGThuqV1IGl0ZW0gaGnhu4duIHThuqFpICh0aMaw4budbmcgbMOgIGl0ZW0gY3Xhu5FpKS4gKi9cbiAgYWN0aXZlPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NzIconModule } from 'ng-zorro-antd/icon';
4
+ import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "ng-zorro-antd/icon";
8
+ import * as i3 from "ng-zorro-antd/tooltip";
9
+ export class GeoButtonComponent {
10
+ appearance = 'primary';
11
+ color = 'brand';
12
+ icon;
13
+ iconTheme = 'outline';
14
+ /** Vị trí icon: `start` (trái) hoặc `end` (phải). */
15
+ iconPlacement = 'start';
16
+ iconOnly = false;
17
+ type = 'button';
18
+ disabled = false;
19
+ /** Tooltip Ant Design (`nz-tooltip`). Ưu tiên hơn `title` native. */
20
+ tooltip = '';
21
+ tooltipPlacement = 'top';
22
+ /** Trạng thái active (vd. toolbar toggle đang bật). */
23
+ active = false;
24
+ /** Native `title` — fallback khi không set `tooltip`. */
25
+ title = '';
26
+ clicked = new EventEmitter();
27
+ get tooltipTitle() {
28
+ return this.tooltip || this.title || '';
29
+ }
30
+ get classNames() {
31
+ return {
32
+ [`geo-button--${this.appearance}`]: true,
33
+ [`geo-button--${this.color}`]: true,
34
+ 'geo-button--icon-only': this.iconOnly,
35
+ 'geo-button--icon-end': !!this.icon && this.iconPlacement === 'end',
36
+ 'geo-button--active': this.active,
37
+ };
38
+ }
39
+ onClick(event) {
40
+ if (!this.disabled) {
41
+ this.clicked.emit(event);
42
+ }
43
+ }
44
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoButtonComponent, isStandalone: true, selector: "geo-button", inputs: { appearance: "appearance", color: "color", icon: "icon", iconTheme: "iconTheme", iconPlacement: "iconPlacement", iconOnly: "iconOnly", type: "type", disabled: "disabled", tooltip: "tooltip", tooltipPlacement: "tooltipPlacement", active: "active", title: "title" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button\n [type]=\"type\"\n [disabled]=\"disabled\"\n class=\"geo-button\"\n [ngClass]=\"classNames\"\n [nz-tooltip]=\"tooltipTitle\"\n [nzTooltipPlacement]=\"tooltipPlacement\"\n [nzTooltipTrigger]=\"tooltipTitle ? 'hover' : null\"\n [attr.aria-label]=\"tooltipTitle || null\"\n [attr.aria-pressed]=\"active ? true : null\"\n (click)=\"onClick($event)\"\n>\n @if (icon && iconPlacement === 'start') {\n <span class=\"geo-button__icon\">\n <span nz-icon [nzType]=\"icon\" [nzTheme]=\"iconTheme\"></span>\n </span>\n }\n @if (!iconOnly) {\n <span class=\"geo-button__label\">\n <ng-content></ng-content>\n </span>\n }\n @if (icon && iconPlacement === 'end') {\n <span class=\"geo-button__icon\">\n <span nz-icon [nzType]=\"icon\" [nzTheme]=\"iconTheme\"></span>\n </span>\n }\n</button>\n", styles: [".geo-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--geo-control-height);min-height:var(--geo-control-height);padding:0 16px;border-radius:var(--geo-radius);border:1px solid transparent;font-size:var(--geo-font-size-sm);font-weight:500;line-height:normal;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease;white-space:nowrap;font-family:inherit;background:transparent;box-sizing:border-box}.geo-button.geo-button--brand{--geo-btn-tone: var(--geo-color-primary-default);--geo-btn-tone-dark: var(--geo-color-primary-hover);--geo-btn-tone-surface: var(--geo-color-primary-surface-light);--geo-btn-secondary-hover: var(--geo-color-primary-secondary-hover)}.geo-button.geo-button--danger{--geo-btn-tone: var(--geo-color-error-default);--geo-btn-tone-dark: var(--geo-color-error-dark);--geo-btn-tone-surface: var(--geo-color-error-light);--geo-btn-secondary-hover: var(--geo-color-error-light)}.geo-button.geo-button--warning{--geo-btn-tone: var(--geo-color-warning-default);--geo-btn-tone-dark: var(--geo-color-warning-dark);--geo-btn-tone-surface: var(--geo-color-warning-light);--geo-btn-secondary-hover: var(--geo-color-warning-light)}.geo-button.geo-button--success{--geo-btn-tone: var(--geo-color-success-default);--geo-btn-tone-dark: var(--geo-color-success-dark);--geo-btn-tone-surface: var(--geo-color-success-light);--geo-btn-secondary-hover: var(--geo-color-success-light)}.geo-button:disabled{cursor:not-allowed;pointer-events:none}.geo-button--primary{background:var(--geo-btn-tone);border-color:var(--geo-btn-tone);color:var(--geo-color-neutral-white)}.geo-button--primary:hover:not(:disabled){background:var(--geo-btn-tone-dark);border-color:var(--geo-btn-tone-dark)}.geo-button--primary:disabled{background:var(--geo-color-neutral-300);border-color:var(--geo-color-neutral-300);color:var(--geo-color-neutral-disabled-text)}.geo-button--secondary{background:var(--geo-color-neutral-white);border-color:var(--geo-btn-tone);color:var(--geo-btn-tone)}.geo-button--secondary:hover:not(:disabled){background:var(--geo-btn-secondary-hover)}.geo-button--secondary:disabled{background:var(--geo-color-neutral-white);border-color:var(--geo-color-neutral-300);color:var(--geo-color-neutral-disabled-text)}.geo-button--tertiary{background:transparent;border-color:transparent;color:var(--geo-btn-tone)}.geo-button--tertiary:hover:not(:disabled){background:var(--geo-btn-tone-surface)}.geo-button--tertiary:disabled{background:transparent;border-color:transparent;color:var(--geo-color-neutral-disabled-text)}.geo-button--icon-only{width:var(--geo-control-height);min-width:var(--geo-control-height);padding:0}.geo-button--active:not(:disabled).geo-button--secondary,.geo-button--active:not(:disabled).geo-button--tertiary{background:var(--geo-btn-tone-surface);border-color:var(--geo-btn-tone);color:var(--geo-btn-tone);box-shadow:inset 0 0 0 1px var(--geo-btn-tone)}.geo-button--active:not(:disabled).geo-button--primary{background:var(--geo-btn-tone-dark);border-color:var(--geo-btn-tone-dark);color:var(--geo-color-neutral-white)}.geo-button__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;font-size:16px;line-height:1}.geo-button__icon:empty{display:none}.geo-button__icon :deep(.anticon),.geo-button__icon :deep(em){width:16px;height:16px;font-size:16px}.geo-button__label{display:inline-flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i3.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }] });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoButtonComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'geo-button', standalone: true, imports: [CommonModule, NzIconModule, NzToolTipModule], template: "<button\n [type]=\"type\"\n [disabled]=\"disabled\"\n class=\"geo-button\"\n [ngClass]=\"classNames\"\n [nz-tooltip]=\"tooltipTitle\"\n [nzTooltipPlacement]=\"tooltipPlacement\"\n [nzTooltipTrigger]=\"tooltipTitle ? 'hover' : null\"\n [attr.aria-label]=\"tooltipTitle || null\"\n [attr.aria-pressed]=\"active ? true : null\"\n (click)=\"onClick($event)\"\n>\n @if (icon && iconPlacement === 'start') {\n <span class=\"geo-button__icon\">\n <span nz-icon [nzType]=\"icon\" [nzTheme]=\"iconTheme\"></span>\n </span>\n }\n @if (!iconOnly) {\n <span class=\"geo-button__label\">\n <ng-content></ng-content>\n </span>\n }\n @if (icon && iconPlacement === 'end') {\n <span class=\"geo-button__icon\">\n <span nz-icon [nzType]=\"icon\" [nzTheme]=\"iconTheme\"></span>\n </span>\n }\n</button>\n", styles: [".geo-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--geo-control-height);min-height:var(--geo-control-height);padding:0 16px;border-radius:var(--geo-radius);border:1px solid transparent;font-size:var(--geo-font-size-sm);font-weight:500;line-height:normal;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease;white-space:nowrap;font-family:inherit;background:transparent;box-sizing:border-box}.geo-button.geo-button--brand{--geo-btn-tone: var(--geo-color-primary-default);--geo-btn-tone-dark: var(--geo-color-primary-hover);--geo-btn-tone-surface: var(--geo-color-primary-surface-light);--geo-btn-secondary-hover: var(--geo-color-primary-secondary-hover)}.geo-button.geo-button--danger{--geo-btn-tone: var(--geo-color-error-default);--geo-btn-tone-dark: var(--geo-color-error-dark);--geo-btn-tone-surface: var(--geo-color-error-light);--geo-btn-secondary-hover: var(--geo-color-error-light)}.geo-button.geo-button--warning{--geo-btn-tone: var(--geo-color-warning-default);--geo-btn-tone-dark: var(--geo-color-warning-dark);--geo-btn-tone-surface: var(--geo-color-warning-light);--geo-btn-secondary-hover: var(--geo-color-warning-light)}.geo-button.geo-button--success{--geo-btn-tone: var(--geo-color-success-default);--geo-btn-tone-dark: var(--geo-color-success-dark);--geo-btn-tone-surface: var(--geo-color-success-light);--geo-btn-secondary-hover: var(--geo-color-success-light)}.geo-button:disabled{cursor:not-allowed;pointer-events:none}.geo-button--primary{background:var(--geo-btn-tone);border-color:var(--geo-btn-tone);color:var(--geo-color-neutral-white)}.geo-button--primary:hover:not(:disabled){background:var(--geo-btn-tone-dark);border-color:var(--geo-btn-tone-dark)}.geo-button--primary:disabled{background:var(--geo-color-neutral-300);border-color:var(--geo-color-neutral-300);color:var(--geo-color-neutral-disabled-text)}.geo-button--secondary{background:var(--geo-color-neutral-white);border-color:var(--geo-btn-tone);color:var(--geo-btn-tone)}.geo-button--secondary:hover:not(:disabled){background:var(--geo-btn-secondary-hover)}.geo-button--secondary:disabled{background:var(--geo-color-neutral-white);border-color:var(--geo-color-neutral-300);color:var(--geo-color-neutral-disabled-text)}.geo-button--tertiary{background:transparent;border-color:transparent;color:var(--geo-btn-tone)}.geo-button--tertiary:hover:not(:disabled){background:var(--geo-btn-tone-surface)}.geo-button--tertiary:disabled{background:transparent;border-color:transparent;color:var(--geo-color-neutral-disabled-text)}.geo-button--icon-only{width:var(--geo-control-height);min-width:var(--geo-control-height);padding:0}.geo-button--active:not(:disabled).geo-button--secondary,.geo-button--active:not(:disabled).geo-button--tertiary{background:var(--geo-btn-tone-surface);border-color:var(--geo-btn-tone);color:var(--geo-btn-tone);box-shadow:inset 0 0 0 1px var(--geo-btn-tone)}.geo-button--active:not(:disabled).geo-button--primary{background:var(--geo-btn-tone-dark);border-color:var(--geo-btn-tone-dark);color:var(--geo-color-neutral-white)}.geo-button__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;font-size:16px;line-height:1}.geo-button__icon:empty{display:none}.geo-button__icon :deep(.anticon),.geo-button__icon :deep(em){width:16px;height:16px;font-size:16px}.geo-button__label{display:inline-flex;align-items:center}\n"] }]
50
+ }], propDecorators: { appearance: [{
51
+ type: Input
52
+ }], color: [{
53
+ type: Input
54
+ }], icon: [{
55
+ type: Input
56
+ }], iconTheme: [{
57
+ type: Input
58
+ }], iconPlacement: [{
59
+ type: Input
60
+ }], iconOnly: [{
61
+ type: Input
62
+ }], type: [{
63
+ type: Input
64
+ }], disabled: [{
65
+ type: Input
66
+ }], tooltip: [{
67
+ type: Input
68
+ }], tooltipPlacement: [{
69
+ type: Input
70
+ }], active: [{
71
+ type: Input
72
+ }], title: [{
73
+ type: Input
74
+ }], clicked: [{
75
+ type: Output
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tYnV0dG9uL2dlby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWJ1dHRvbi9nZW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBVXhELE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsVUFBVSxHQUF3QixTQUFTLENBQUM7SUFDNUMsS0FBSyxHQUFtQixPQUFPLENBQUM7SUFDaEMsSUFBSSxDQUFVO0lBQ2QsU0FBUyxHQUFtQyxTQUFTLENBQUM7SUFDL0QscURBQXFEO0lBQzVDLGFBQWEsR0FBb0IsT0FBTyxDQUFDO0lBQ3pDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsSUFBSSxHQUF3QixRQUFRLENBQUM7SUFDckMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixxRUFBcUU7SUFDNUQsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLGdCQUFnQixHQUE4QixLQUFLLENBQUM7SUFDN0QsdURBQXVEO0lBQzlDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIseURBQXlEO0lBQ2hELEtBQUssR0FBRyxFQUFFLENBQUM7SUFFVixPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUVuRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU87WUFDTCxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSTtZQUN4QyxDQUFDLGVBQWUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSTtZQUNuQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUs7WUFDbkUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQzt3R0F0Q1Usa0JBQWtCOzRGQUFsQixrQkFBa0IseVhDYi9CLHMwQkE0QkEsMDdHRG5CWSxZQUFZLDRIQUFFLFlBQVksaU5BQUUsZUFBZTs7NEZBSTFDLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7OEJBSzdDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IE56VG9vbFRpcE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdG9vbHRpcCc7XG5pbXBvcnQgeyBHZW9CdXR0b25BcHBlYXJhbmNlLCBHZW9CdXR0b25Db2xvciwgR2VvQnV0dG9uVG9vbHRpcFBsYWNlbWVudCB9IGZyb20gJy4vZ2VvLWJ1dHRvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOekljb25Nb2R1bGUsIE56VG9vbFRpcE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1idXR0b24uY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBHZW9CdXR0b25BcHBlYXJhbmNlID0gJ3ByaW1hcnknO1xuICBASW5wdXQoKSBjb2xvcjogR2VvQnV0dG9uQ29sb3IgPSAnYnJhbmQnO1xuICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uVGhlbWU6ICdvdXRsaW5lJyB8ICdmaWxsJyB8ICd0d290b25lJyA9ICdvdXRsaW5lJztcbiAgLyoqIFbhu4sgdHLDrSBpY29uOiBgc3RhcnRgICh0csOhaSkgaG/hurdjIGBlbmRgIChwaOG6o2kpLiAqL1xuICBASW5wdXQoKSBpY29uUGxhY2VtZW50OiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnO1xuICBASW5wdXQoKSBpY29uT25seSA9IGZhbHNlO1xuICBASW5wdXQoKSB0eXBlOiAnYnV0dG9uJyB8ICdzdWJtaXQnID0gJ2J1dHRvbic7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIC8qKiBUb29sdGlwIEFudCBEZXNpZ24gKGBuei10b29sdGlwYCkuIMavdSB0acOqbiBoxqFuIGB0aXRsZWAgbmF0aXZlLiAqL1xuICBASW5wdXQoKSB0b29sdGlwID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXBQbGFjZW1lbnQ6IEdlb0J1dHRvblRvb2x0aXBQbGFjZW1lbnQgPSAndG9wJztcbiAgLyoqIFRy4bqhbmcgdGjDoWkgYWN0aXZlICh2ZC4gdG9vbGJhciB0b2dnbGUgxJFhbmcgYuG6rXQpLiAqL1xuICBASW5wdXQoKSBhY3RpdmUgPSBmYWxzZTtcbiAgLyoqIE5hdGl2ZSBgdGl0bGVgIOKAlCBmYWxsYmFjayBraGkga2jDtG5nIHNldCBgdG9vbHRpcGAuICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG5cbiAgQE91dHB1dCgpIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgZ2V0IHRvb2x0aXBUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvb2x0aXAgfHwgdGhpcy50aXRsZSB8fCAnJztcbiAgfVxuXG4gIGdldCBjbGFzc05hbWVzKCk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHtcbiAgICByZXR1cm4ge1xuICAgICAgW2BnZW8tYnV0dG9uLS0ke3RoaXMuYXBwZWFyYW5jZX1gXTogdHJ1ZSxcbiAgICAgIFtgZ2VvLWJ1dHRvbi0tJHt0aGlzLmNvbG9yfWBdOiB0cnVlLFxuICAgICAgJ2dlby1idXR0b24tLWljb24tb25seSc6IHRoaXMuaWNvbk9ubHksXG4gICAgICAnZ2VvLWJ1dHRvbi0taWNvbi1lbmQnOiAhIXRoaXMuaWNvbiAmJiB0aGlzLmljb25QbGFjZW1lbnQgPT09ICdlbmQnLFxuICAgICAgJ2dlby1idXR0b24tLWFjdGl2ZSc6IHRoaXMuYWN0aXZlLFxuICAgIH07XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uXG4gIFt0eXBlXT1cInR5cGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBjbGFzcz1cImdlby1idXR0b25cIlxuICBbbmdDbGFzc109XCJjbGFzc05hbWVzXCJcbiAgW256LXRvb2x0aXBdPVwidG9vbHRpcFRpdGxlXCJcbiAgW256VG9vbHRpcFBsYWNlbWVudF09XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgW256VG9vbHRpcFRyaWdnZXJdPVwidG9vbHRpcFRpdGxlID8gJ2hvdmVyJyA6IG51bGxcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cInRvb2x0aXBUaXRsZSB8fCBudWxsXCJcbiAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImFjdGl2ZSA/IHRydWUgOiBudWxsXCJcbiAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4+XG4gIEBpZiAoaWNvbiAmJiBpY29uUGxhY2VtZW50ID09PSAnc3RhcnQnKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJnZW8tYnV0dG9uX19pY29uXCI+XG4gICAgICA8c3BhbiBuei1pY29uIFtuelR5cGVdPVwiaWNvblwiIFtuelRoZW1lXT1cImljb25UaGVtZVwiPjwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIH1cbiAgQGlmICghaWNvbk9ubHkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImdlby1idXR0b25fX2xhYmVsXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9zcGFuPlxuICB9XG4gIEBpZiAoaWNvbiAmJiBpY29uUGxhY2VtZW50ID09PSAnZW5kJykge1xuICAgIDxzcGFuIGNsYXNzPVwiZ2VvLWJ1dHRvbl9faWNvblwiPlxuICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cImljb25cIiBbbnpUaGVtZV09XCJpY29uVGhlbWVcIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICB9XG48L2J1dHRvbj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWJ1dHRvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1idXR0b24vZ2VvLWJ1dHRvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgR2VvQnV0dG9uQXBwZWFyYW5jZSA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3RlcnRpYXJ5JztcblxuZXhwb3J0IHR5cGUgR2VvQnV0dG9uQ29sb3IgPSAnYnJhbmQnIHwgJ2RhbmdlcicgfCAnd2FybmluZycgfCAnc3VjY2Vzcyc7XG5cbi8qKiBLaOG7m3AgYE56VG9vbHRpcFBsYWNlbWVudGAg4oCUIGdp4buvIHR5cGUgaOG6uXAgxJHhu4MgZG9tYWluIGtow7RuZyBpbXBvcnQgbmctem9ycm8uICovXG5leHBvcnQgdHlwZSBHZW9CdXR0b25Ub29sdGlwUGxhY2VtZW50ID1cbiAgfCAndG9wJ1xuICB8ICdsZWZ0J1xuICB8ICdyaWdodCdcbiAgfCAnYm90dG9tJ1xuICB8ICd0b3BMZWZ0J1xuICB8ICd0b3BSaWdodCdcbiAgfCAnYm90dG9tTGVmdCdcbiAgfCAnYm90dG9tUmlnaHQnXG4gIHwgJ2xlZnRUb3AnXG4gIHwgJ2xlZnRCb3R0b20nXG4gIHwgJ3JpZ2h0VG9wJ1xuICB8ICdyaWdodEJvdHRvbSc7XG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ng-zorro-antd/checkbox";
6
+ import * as i2 from "@angular/forms";
7
+ export class GeoCheckboxComponent {
8
+ label = '';
9
+ checked = false;
10
+ disabled = false;
11
+ indeterminate = false;
12
+ checkedChange = new EventEmitter();
13
+ onChange(value) {
14
+ this.checked = value;
15
+ this.checkedChange.emit(value);
16
+ }
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GeoCheckboxComponent, isStandalone: true, selector: "geo-checkbox", inputs: { label: "label", checked: "checked", disabled: "disabled", indeterminate: "indeterminate" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<label\n nz-checkbox\n class=\"geo-checkbox\"\n [nzDisabled]=\"disabled\"\n [nzIndeterminate]=\"indeterminate\"\n [(ngModel)]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n>{{ label }}</label>\n", styles: ["geo-checkbox{display:inline-block;--ant-primary-color: var(--geo-color-primary-default);--ant-primary-color-hover: var(--geo-color-primary-hover);--ant-primary-color-active: var(--geo-color-primary-hover)}geo-checkbox .geo-checkbox{font-size:14px;color:var(--geo-color-neutral-900)}geo-checkbox .ant-checkbox:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:var(--geo-color-primary-default)!important;border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled):after{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:var(--geo-color-neutral-white)!important;border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled) .ant-checkbox-inner:after{background-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-input:focus+.ant-checkbox-inner,geo-checkbox .ant-checkbox-input:focus-visible+.ant-checkbox-inner{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{background-color:var(--geo-color-primary-hover)!important;border-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled):hover .ant-checkbox-inner:after{background-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-disabled .ant-checkbox-inner{background-color:var(--geo-color-neutral-100)!important;border-color:var(--geo-color-neutral-300)!important}geo-checkbox .ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after{border-color:#00000040!important}geo-checkbox .ant-checkbox-disabled.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#00000040!important}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1.NzCheckboxComponent, selector: "[nz-checkbox]", inputs: ["nzValue", "nzAutoFocus", "nzDisabled", "nzIndeterminate", "nzChecked", "nzId"], outputs: ["nzCheckedChange"], exportAs: ["nzCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoCheckboxComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'geo-checkbox', standalone: true, imports: [NgZorroAntdModule, FormsModule], encapsulation: ViewEncapsulation.None, template: "<label\n nz-checkbox\n class=\"geo-checkbox\"\n [nzDisabled]=\"disabled\"\n [nzIndeterminate]=\"indeterminate\"\n [(ngModel)]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n>{{ label }}</label>\n", styles: ["geo-checkbox{display:inline-block;--ant-primary-color: var(--geo-color-primary-default);--ant-primary-color-hover: var(--geo-color-primary-hover);--ant-primary-color-active: var(--geo-color-primary-hover)}geo-checkbox .geo-checkbox{font-size:14px;color:var(--geo-color-neutral-900)}geo-checkbox .ant-checkbox:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:var(--geo-color-primary-default)!important;border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled):after{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:var(--geo-color-neutral-white)!important;border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled) .ant-checkbox-inner:after{background-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-input:focus+.ant-checkbox-inner,geo-checkbox .ant-checkbox-input:focus-visible+.ant-checkbox-inner{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{background-color:var(--geo-color-primary-hover)!important;border-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled):hover .ant-checkbox-inner:after{background-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-disabled .ant-checkbox-inner{background-color:var(--geo-color-neutral-100)!important;border-color:var(--geo-color-neutral-300)!important}geo-checkbox .ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after{border-color:#00000040!important}geo-checkbox .ant-checkbox-disabled.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#00000040!important}\n"] }]
23
+ }], propDecorators: { label: [{
24
+ type: Input
25
+ }], checked: [{
26
+ type: Input
27
+ }], disabled: [{
28
+ type: Input
29
+ }], indeterminate: [{
30
+ type: Input
31
+ }], checkedChange: [{
32
+ type: Output
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1jaGVja2JveC9nZW8tY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWNoZWNrYm94L2dlby1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQVV4RSxNQUFNLE9BQU8sb0JBQW9CO0lBQ3RCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUVyQixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUV0RCxRQUFRLENBQUMsS0FBYztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO3dHQVhVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDJOQ1pqQyxnTkFRQSxpdEVERFksaUJBQWlCLGdRQUFFLFdBQVc7OzRGQUs3QixvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxpQkFHMUIsaUJBQWlCLENBQUMsSUFBSTs4QkFHNUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ1pvcnJvQW50ZE1vZHVsZSB9IGZyb20gJy4uLy4uL25nLXpvcnJvL25nLXpvcnJvLWFudGQubW9kdWxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLWNoZWNrYm94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nWm9ycm9BbnRkTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLWNoZWNrYm94LmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvQ2hlY2tib3hDb21wb25lbnQge1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBjaGVja2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBvbkNoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPGxhYmVsXG4gIG56LWNoZWNrYm94XG4gIGNsYXNzPVwiZ2VvLWNoZWNrYm94XCJcbiAgW256RGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbbnpJbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICBbKG5nTW9kZWwpXT1cImNoZWNrZWRcIlxuICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbj57eyBsYWJlbCB9fTwvbGFiZWw+XG4iXX0=
@@ -0,0 +1,76 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';
4
+ import { NzIconModule } from 'ng-zorro-antd/icon';
5
+ import { GeoButtonComponent } from '../geo-button/geo-button.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "ng-zorro-antd/core/transition-patch";
8
+ import * as i2 from "ng-zorro-antd/icon";
9
+ import * as i3 from "ng-zorro-antd/modal";
10
+ export class GeoConfirmModalComponent {
11
+ visible = false;
12
+ title = 'Xác nhận xoá';
13
+ message = '';
14
+ highlight = '';
15
+ description = 'Hành động không thể hoàn tác, bạn chắc chắn muốn thực hiện?';
16
+ cancelText = 'Hủy';
17
+ confirmText = 'Xác nhận';
18
+ confirmLoading = false;
19
+ width = 445;
20
+ maskClosable = false;
21
+ closable = true;
22
+ visibleChange = new EventEmitter();
23
+ confirm = new EventEmitter();
24
+ cancel = new EventEmitter();
25
+ get hasDefaultBody() {
26
+ return !!(this.message || this.highlight || this.description);
27
+ }
28
+ onVisibleChange(visible) {
29
+ if (this.visible === visible) {
30
+ return;
31
+ }
32
+ this.visibleChange.emit(visible);
33
+ }
34
+ onCancel() {
35
+ this.visibleChange.emit(false);
36
+ this.cancel.emit();
37
+ }
38
+ onConfirm() {
39
+ this.confirm.emit();
40
+ }
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoConfirmModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoConfirmModalComponent, isStandalone: true, selector: "geo-confirm-modal", inputs: { visible: "visible", title: "title", message: "message", highlight: "highlight", description: "description", cancelText: "cancelText", confirmText: "confirmText", confirmLoading: "confirmLoading", width: "width", maskClosable: "maskClosable", closable: "closable" }, outputs: { visibleChange: "visibleChange", confirm: "confirm", cancel: "cancel" }, ngImport: i0, template: "<nz-modal\n [nzVisible]=\"visible\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMaskClosable]=\"maskClosable\"\n [nzWidth]=\"width\"\n nzWrapClassName=\"geo-confirm-modal-wrap\"\n nzClassName=\"geo-confirm-modal\"\n (nzVisibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container *nzModalContent>\n <div class=\"geo-confirm-modal__content\">\n <div class=\"geo-confirm-modal__header\">\n <h2 class=\"geo-confirm-modal__title\">{{ title }}</h2>\n @if (closable) {\n <button\n type=\"button\"\n class=\"geo-confirm-modal__close\"\n aria-label=\"\u0110\u00F3ng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div class=\"geo-confirm-modal__body\">\n @if (hasDefaultBody) {\n <div class=\"geo-confirm-modal__message\">\n @if (message || highlight) {\n <p class=\"geo-confirm-modal__paragraph\">\n @if (message) {\n <span>{{ message }}</span>\n }\n @if (highlight) {\n <strong class=\"geo-confirm-modal__highlight\">\u201C{{ highlight }}\u201D</strong>\n }\n </p>\n }\n @if (description) {\n <p class=\"geo-confirm-modal__paragraph\">{{ description }}</p>\n }\n </div>\n } @else {\n <div class=\"geo-confirm-modal__message\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n\n <div class=\"geo-confirm-modal__footer\">\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelText }}\n </geo-button>\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [disabled]=\"confirmLoading\"\n (clicked)=\"onConfirm()\"\n >\n {{ confirmText }}\n </geo-button>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n", styles: [".geo-confirm-modal-wrap .ant-modal-header{display:none}.geo-confirm-modal-wrap .ant-modal-content{border-radius:var(--geo-radius);padding:0;overflow:hidden}.geo-confirm-modal-wrap .ant-modal-body{padding:0}.geo-confirm-modal__content{display:flex;flex-direction:column;gap:17px;padding:24px;background:var(--geo-color-neutral-white)}.geo-confirm-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px}.geo-confirm-modal__title{margin:0;font-size:18px;font-weight:700;line-height:normal;color:var(--geo-color-neutral-500)}.geo-confirm-modal__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;flex-shrink:0}.geo-confirm-modal__close:hover{color:var(--geo-color-neutral-900)}.geo-confirm-modal__body{display:flex;flex-direction:column}.geo-confirm-modal__message{display:flex;flex-direction:column;gap:8px;max-width:397px;font-size:14px;line-height:1.4;color:var(--geo-color-neutral-900)}.geo-confirm-modal__paragraph{margin:0}.geo-confirm-modal__highlight{font-weight:600}.geo-confirm-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i3.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i3.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoConfirmModalComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'geo-confirm-modal', standalone: true, imports: [CommonModule, NgZorroAntdModule, NzIconModule, GeoButtonComponent], encapsulation: ViewEncapsulation.None, template: "<nz-modal\n [nzVisible]=\"visible\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMaskClosable]=\"maskClosable\"\n [nzWidth]=\"width\"\n nzWrapClassName=\"geo-confirm-modal-wrap\"\n nzClassName=\"geo-confirm-modal\"\n (nzVisibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container *nzModalContent>\n <div class=\"geo-confirm-modal__content\">\n <div class=\"geo-confirm-modal__header\">\n <h2 class=\"geo-confirm-modal__title\">{{ title }}</h2>\n @if (closable) {\n <button\n type=\"button\"\n class=\"geo-confirm-modal__close\"\n aria-label=\"\u0110\u00F3ng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div class=\"geo-confirm-modal__body\">\n @if (hasDefaultBody) {\n <div class=\"geo-confirm-modal__message\">\n @if (message || highlight) {\n <p class=\"geo-confirm-modal__paragraph\">\n @if (message) {\n <span>{{ message }}</span>\n }\n @if (highlight) {\n <strong class=\"geo-confirm-modal__highlight\">\u201C{{ highlight }}\u201D</strong>\n }\n </p>\n }\n @if (description) {\n <p class=\"geo-confirm-modal__paragraph\">{{ description }}</p>\n }\n </div>\n } @else {\n <div class=\"geo-confirm-modal__message\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n\n <div class=\"geo-confirm-modal__footer\">\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelText }}\n </geo-button>\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [disabled]=\"confirmLoading\"\n (clicked)=\"onConfirm()\"\n >\n {{ confirmText }}\n </geo-button>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n", styles: [".geo-confirm-modal-wrap .ant-modal-header{display:none}.geo-confirm-modal-wrap .ant-modal-content{border-radius:var(--geo-radius);padding:0;overflow:hidden}.geo-confirm-modal-wrap .ant-modal-body{padding:0}.geo-confirm-modal__content{display:flex;flex-direction:column;gap:17px;padding:24px;background:var(--geo-color-neutral-white)}.geo-confirm-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px}.geo-confirm-modal__title{margin:0;font-size:18px;font-weight:700;line-height:normal;color:var(--geo-color-neutral-500)}.geo-confirm-modal__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;flex-shrink:0}.geo-confirm-modal__close:hover{color:var(--geo-color-neutral-900)}.geo-confirm-modal__body{display:flex;flex-direction:column}.geo-confirm-modal__message{display:flex;flex-direction:column;gap:8px;max-width:397px;font-size:14px;line-height:1.4;color:var(--geo-color-neutral-900)}.geo-confirm-modal__paragraph{margin:0}.geo-confirm-modal__highlight{font-weight:600}.geo-confirm-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:12px}\n"] }]
47
+ }], propDecorators: { visible: [{
48
+ type: Input
49
+ }], title: [{
50
+ type: Input
51
+ }], message: [{
52
+ type: Input
53
+ }], highlight: [{
54
+ type: Input
55
+ }], description: [{
56
+ type: Input
57
+ }], cancelText: [{
58
+ type: Input
59
+ }], confirmText: [{
60
+ type: Input
61
+ }], confirmLoading: [{
62
+ type: Input
63
+ }], width: [{
64
+ type: Input
65
+ }], maskClosable: [{
66
+ type: Input
67
+ }], closable: [{
68
+ type: Input
69
+ }], visibleChange: [{
70
+ type: Output
71
+ }], confirm: [{
72
+ type: Output
73
+ }], cancel: [{
74
+ type: Output
75
+ }] } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWNvbmZpcm0tbW9kYWwvZ2VvLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWNvbmZpcm0tbW9kYWwvZ2VvLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFVeEUsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLEtBQUssR0FBRyxjQUFjLENBQUM7SUFDdkIsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixXQUFXLEdBQUcsNkRBQTZELENBQUM7SUFDNUUsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsS0FBSyxHQUFvQixHQUFHLENBQUM7SUFDN0IsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWYsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFDNUMsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDbkMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFNUMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWdCO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt3R0FwQ1Usd0JBQXdCOzRGQUF4Qix3QkFBd0Isb2JDcEJyQyxnbEVBbUVBLDR4Q0RwRFksWUFBWSw4QkFBRSxpQkFBaUIscXNDQUFFLFlBQVksK0JBQUUsa0JBQWtCOzs0RkFLaEUsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixDQUFDLGlCQUc3RCxpQkFBaUIsQ0FBQyxJQUFJOzhCQUc1QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ1pvcnJvQW50ZE1vZHVsZSB9IGZyb20gJy4uLy4uL25nLXpvcnJvL25nLXpvcnJvLWFudGQubW9kdWxlJztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5pbXBvcnQgeyBHZW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9nZW8tYnV0dG9uL2dlby1idXR0b24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLWNvbmZpcm0tbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ1pvcnJvQW50ZE1vZHVsZSwgTnpJY29uTW9kdWxlLCBHZW9CdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9Db25maXJtTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSB2aXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ1jDoWMgbmjhuq1uIHhvw6EnO1xuICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIGhpZ2hsaWdodCA9ICcnO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICdIw6BuaCDEkeG7mW5nIGtow7RuZyB0aOG7gyBob8OgbiB0w6FjLCBi4bqhbiBjaOG6r2MgY2jhuq9uIG114buRbiB0aOG7sWMgaGnhu4duPyc7XG4gIEBJbnB1dCgpIGNhbmNlbFRleHQgPSAnSOG7p3knO1xuICBASW5wdXQoKSBjb25maXJtVGV4dCA9ICdYw6FjIG5o4bqtbic7XG4gIEBJbnB1dCgpIGNvbmZpcm1Mb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSA0NDU7XG4gIEBJbnB1dCgpIG1hc2tDbG9zYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBjbG9zYWJsZSA9IHRydWU7XG5cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBoYXNEZWZhdWx0Qm9keSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5tZXNzYWdlIHx8IHRoaXMuaGlnaGxpZ2h0IHx8IHRoaXMuZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgb25WaXNpYmxlQ2hhbmdlKHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aXNpYmxlID09PSB2aXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmlzaWJsZSk7XG4gIH1cblxuICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25Db25maXJtKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxuei1tb2RhbFxuICBbbnpWaXNpYmxlXT1cInZpc2libGVcIlxuICBbbnpUaXRsZV09XCInJ1wiXG4gIFtuekZvb3Rlcl09XCJudWxsXCJcbiAgW256Q2xvc2FibGVdPVwiZmFsc2VcIlxuICBbbnpNYXNrQ2xvc2FibGVdPVwibWFza0Nsb3NhYmxlXCJcbiAgW256V2lkdGhdPVwid2lkdGhcIlxuICBueldyYXBDbGFzc05hbWU9XCJnZW8tY29uZmlybS1tb2RhbC13cmFwXCJcbiAgbnpDbGFzc05hbWU9XCJnZW8tY29uZmlybS1tb2RhbFwiXG4gIChuelZpc2libGVDaGFuZ2UpPVwib25WaXNpYmxlQ2hhbmdlKCRldmVudClcIlxuPlxuICA8bmctY29udGFpbmVyICpuek1vZGFsQ29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNvbmZpcm0tbW9kYWxfX2NvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnZW8tY29uZmlybS1tb2RhbF9faGVhZGVyXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImdlby1jb25maXJtLW1vZGFsX190aXRsZVwiPnt7IHRpdGxlIH19PC9oMj5cbiAgICAgICAgQGlmIChjbG9zYWJsZSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tY29uZmlybS1tb2RhbF9fY2xvc2VcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIsSQw7NuZ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJjbG9zZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdlby1jb25maXJtLW1vZGFsX19ib2R5XCI+XG4gICAgICAgIEBpZiAoaGFzRGVmYXVsdEJvZHkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNvbmZpcm0tbW9kYWxfX21lc3NhZ2VcIj5cbiAgICAgICAgICAgIEBpZiAobWVzc2FnZSB8fCBoaWdobGlnaHQpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJnZW8tY29uZmlybS1tb2RhbF9fcGFyYWdyYXBoXCI+XG4gICAgICAgICAgICAgICAgQGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBtZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGhpZ2hsaWdodCkge1xuICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImdlby1jb25maXJtLW1vZGFsX19oaWdobGlnaHRcIj7igJx7eyBoaWdobGlnaHQgfX3igJ08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJnZW8tY29uZmlybS1tb2RhbF9fcGFyYWdyYXBoXCI+e3sgZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW8tY29uZmlybS1tb2RhbF9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdlby1jb25maXJtLW1vZGFsX19mb290ZXJcIj5cbiAgICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIGNvbG9yPVwiYnJhbmRcIiAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCI+XG4gICAgICAgICAge3sgY2FuY2VsVGV4dCB9fVxuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICAgIGNvbG9yPVwiYnJhbmRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maXJtTG9hZGluZ1wiXG4gICAgICAgICAgKGNsaWNrZWQpPVwib25Db25maXJtKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29uZmlybVRleHQgfX1cbiAgICAgICAgPC9nZW8tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uei1tb2RhbD5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbmZpcm0tbW9kYWwudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tY29uZmlybS1tb2RhbC9nZW8tY29uZmlybS1tb2RhbC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHZW9Db25maXJtTW9kYWxDb250ZW50IHtcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgaGlnaGxpZ2h0Pzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbiJdfQ==