@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
@@ -0,0 +1,33 @@
1
+ import { NzNotificationRef } from 'ng-zorro-antd/notification';
2
+ import { GeoToastConfig, GeoToastGlobalConfig, GeoToastOptions, GeoToastType } from './geo-toast.types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Toast service dựa trên `NzNotificationService` (Ant Design).
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * this.toast.success('Thành công!', 'Lưu hồ sơ thành công');
10
+ * this.toast.error('Thất bại!', 'Vui lòng kiểm tra lại', { duration: 0 });
11
+ * ```
12
+ */
13
+ export declare class GeoToastService {
14
+ private readonly notification;
15
+ private readonly nzConfig;
16
+ private defaults;
17
+ /** Cấu hình mặc định toàn cục (duration, placement, …). */
18
+ config(options: GeoToastGlobalConfig): void;
19
+ success(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef;
20
+ error(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef;
21
+ warning(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef;
22
+ info(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef;
23
+ /** API tổng quát — đầy đủ type + options. */
24
+ create(type: GeoToastType, title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef;
25
+ /** Mở toast từ config object. */
26
+ open(config: GeoToastConfig): NzNotificationRef;
27
+ /** Đóng 1 toast theo messageId (từ NzNotificationRef). */
28
+ remove(id?: string): void;
29
+ /** Đóng tất cả toast đang mở. */
30
+ removeAll(): void;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoToastService, never>;
32
+ static ɵprov: i0.ɵɵInjectableDeclaration<GeoToastService>;
33
+ }
@@ -0,0 +1,45 @@
1
+ import { NgClassInterface, NgStyleInterface } from 'ng-zorro-antd/core/types';
2
+ import { NzNotificationPlacement } from 'ng-zorro-antd/notification';
3
+ export type GeoToastType = 'success' | 'error' | 'warning' | 'info';
4
+ export type GeoToastPlacement = NzNotificationPlacement;
5
+ export declare const GEO_TOAST_DEFAULT_TITLES: Record<GeoToastType, string>;
6
+ export declare const GEO_TOAST_ICONS: Record<GeoToastType, string>;
7
+ /** Options khi gọi GeoToastService (map sang NzNotificationDataOptions). */
8
+ export interface GeoToastOptions {
9
+ /** Auto close duration (ms). `0` = không tự đóng. Default `4500`. */
10
+ duration?: number;
11
+ /** Vị trí toast. Default `topRight`. */
12
+ placement?: GeoToastPlacement;
13
+ /** Pause countdown khi hover. Default `true`. */
14
+ pauseOnHover?: boolean;
15
+ /** Animate enter/leave. Default `true`. */
16
+ animate?: boolean;
17
+ /** Unique key — toast cùng key sẽ được thay thế. */
18
+ key?: string;
19
+ /** Hiện icon trạng thái. Default `true`. */
20
+ showIcon?: boolean;
21
+ /** Hiện nút đóng. Default `true`. */
22
+ closable?: boolean;
23
+ /** Custom icon type (Ant Design). */
24
+ icon?: string;
25
+ /** Inline style trên notice. */
26
+ style?: NgStyleInterface;
27
+ /** Extra CSS class. */
28
+ className?: NgClassInterface | string;
29
+ /** Arbitrary data gắn vào notice. */
30
+ data?: unknown;
31
+ }
32
+ export interface GeoToastConfig extends GeoToastOptions {
33
+ type: GeoToastType;
34
+ title?: string;
35
+ message?: string;
36
+ }
37
+ export interface GeoToastGlobalConfig {
38
+ duration?: number;
39
+ placement?: GeoToastPlacement;
40
+ pauseOnHover?: boolean;
41
+ animate?: boolean;
42
+ maxStack?: number;
43
+ top?: number;
44
+ bottom?: number;
45
+ }
@@ -0,0 +1,23 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { NzFormatEmitEvent } from 'ng-zorro-antd/tree';
3
+ import { GeoTreeNode } from './geo-tree.types';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Tree checkable — wrap `nz-tree`. Domain dùng `geo-tree`, không import NzTreeModule.
7
+ * API chính: `nodes` + `checkedKeys` / `checkedKeysChange` (giống pattern ILIS → nz-tree).
8
+ */
9
+ export declare class GeoTreeComponent {
10
+ nodes: GeoTreeNode[];
11
+ checkable: boolean;
12
+ checkedKeys: Array<string | number>;
13
+ expandedKeys: Array<string | number>;
14
+ showLine: boolean;
15
+ blockNode: boolean;
16
+ checkedKeysChange: EventEmitter<(string | number)[]>;
17
+ expandedKeysChange: EventEmitter<(string | number)[]>;
18
+ nodeClick: EventEmitter<NzFormatEmitEvent>;
19
+ onCheckedKeysChange(keys: Array<string | number>): void;
20
+ onExpandedKeysChange(keys: Array<string | number>): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoTreeComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoTreeComponent, "geo-tree", never, { "nodes": { "alias": "nodes"; "required": false; }; "checkable": { "alias": "checkable"; "required": false; }; "checkedKeys": { "alias": "checkedKeys"; "required": false; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; }; "showLine": { "alias": "showLine"; "required": false; }; "blockNode": { "alias": "blockNode"; "required": false; }; }, { "checkedKeysChange": "checkedKeysChange"; "expandedKeysChange": "expandedKeysChange"; "nodeClick": "nodeClick"; }, never, never, true, never>;
23
+ }
@@ -0,0 +1,12 @@
1
+ export interface GeoTreeNode {
2
+ key: string;
3
+ title: string;
4
+ expanded?: boolean;
5
+ children?: GeoTreeNode[];
6
+ isLeaf?: boolean;
7
+ disabled?: boolean;
8
+ disableCheckbox?: boolean;
9
+ /** Payload tùy chọn (domain gắn data nghiệp vụ). */
10
+ data?: unknown;
11
+ [prop: string]: unknown;
12
+ }
@@ -0,0 +1,35 @@
1
+ import { GeoTypographyColor, GeoTypographyVariant } from './geo-typography.types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Typography based on Ant Design Typography, styled with GEO type scale (Inter).
5
+ *
6
+ * @example
7
+ * ```html
8
+ * <geo-typography variant="h1">Page title</geo-typography>
9
+ * <geo-typography variant="body" color="secondary">Helper</geo-typography>
10
+ * ```
11
+ */
12
+ export declare class GeoTypographyComponent {
13
+ /** Type scale variant from the design system. */
14
+ variant: GeoTypographyVariant;
15
+ /** Semantic text color. */
16
+ color: GeoTypographyColor;
17
+ /** Force bold weight (overrides variant weight when true). */
18
+ strong: boolean;
19
+ /** Underline text decoration. */
20
+ underline: boolean;
21
+ /** Strikethrough text decoration. */
22
+ delete: boolean;
23
+ /** Mark / highlight background. */
24
+ mark: boolean;
25
+ /** Monospace code appearance. */
26
+ code: boolean;
27
+ /** Disabled appearance */
28
+ disabled: boolean;
29
+ get hostClassList(): string;
30
+ get headingRole(): string | null;
31
+ get headingLevel(): number | null;
32
+ get nzType(): 'secondary' | 'success' | 'warning' | 'danger' | undefined;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoTypographyComponent, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoTypographyComponent, "geo-typography", never, { "variant": { "alias": "variant"; "required": false; }; "color": { "alias": "color"; "required": false; }; "strong": { "alias": "strong"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "mark": { "alias": "mark"; "required": false; }; "code": { "alias": "code"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["*"], true, never>;
35
+ }
@@ -0,0 +1,12 @@
1
+ export type GeoTypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'subtitle' | 'body' | 'body-small' | 'caption' | 'overline' | 'tiny';
2
+ export type GeoTypographyColor = 'default' | 'secondary' | 'primary' | 'success' | 'warning' | 'danger' | 'disabled';
3
+ /** Semantic HTML element rendered for each variant. */
4
+ export declare const GEO_TYPOGRAPHY_TAG: Record<GeoTypographyVariant, string>;
5
+ export declare const GEO_TYPOGRAPHY_VARIANTS: {
6
+ variant: GeoTypographyVariant;
7
+ label: string;
8
+ size: string;
9
+ weight: string;
10
+ lineHeight: string;
11
+ usage: string;
12
+ }[];
@@ -0,0 +1,59 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { NzUploadChangeParam, NzUploadFile } from 'ng-zorro-antd/upload';
3
+ import { Observable } from 'rxjs';
4
+ import { GeoUploadCustomRequest, GeoUploadFile, geoFormatBytes, geoFormatSpeed, geoUploadPercent } from './geo-upload.types';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Upload kéo-thả theo design GEO (dropzone + danh sách file có progress).
8
+ * Dựa trên `nz-upload` (Ant Design). Form field gọn dùng `geo-file-picker`.
9
+ */
10
+ export declare class GeoUploadComponent {
11
+ private readonly cdr;
12
+ /** Upload endpoint — bỏ trống nếu dùng `customRequest` / chỉ chọn file local. */
13
+ action: string | ((file: NzUploadFile) => string | Observable<string>);
14
+ accept: string;
15
+ /** Max size (bytes). Default 1MB. `0` = không giới hạn. */
16
+ maxSize: number;
17
+ multiple: boolean;
18
+ disabled: boolean;
19
+ error: boolean;
20
+ errorMessage: string;
21
+ hint: string;
22
+ titlePrefix: string;
23
+ selectText: string;
24
+ titleSuffix: string;
25
+ listTitle: string;
26
+ showListTitle: boolean;
27
+ /** Controlled file list. */
28
+ fileList: GeoUploadFile[];
29
+ headers?: {} | ((file: NzUploadFile) => {} | Observable<{}>);
30
+ data?: {} | ((file: NzUploadFile) => {} | Observable<{}>);
31
+ name: string;
32
+ withCredentials: boolean;
33
+ directory: boolean;
34
+ /** Custom XHR — mặc định simulate progress khi không có `action`. */
35
+ customRequest?: GeoUploadCustomRequest;
36
+ beforeUpload?: (file: NzUploadFile, fileList: NzUploadFile[]) => boolean | Observable<boolean>;
37
+ fileListChange: EventEmitter<GeoUploadFile[]>;
38
+ change: EventEmitter<NzUploadChangeParam>;
39
+ remove: EventEmitter<GeoUploadFile>;
40
+ reject: EventEmitter<{
41
+ file: File;
42
+ reason: "type" | "size";
43
+ }>;
44
+ readonly formatBytes: typeof geoFormatBytes;
45
+ readonly formatSpeed: typeof geoFormatSpeed;
46
+ readonly percentOf: typeof geoUploadPercent;
47
+ get resolvedCustomRequest(): GeoUploadCustomRequest | undefined;
48
+ onFileListChange(list: NzUploadFile[]): void;
49
+ onChange(event: NzUploadChangeParam): void;
50
+ handleBeforeUpload: (file: NzUploadFile, _fileList: NzUploadFile[]) => boolean | Observable<boolean>;
51
+ onRemove: (file: NzUploadFile) => boolean;
52
+ removeFile(file: GeoUploadFile, event: Event): void;
53
+ progressLabel(file: GeoUploadFile): string;
54
+ speedLabel(file: GeoUploadFile): string;
55
+ /** Demo / local upload khi không có action. */
56
+ private simulateUpload;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoUploadComponent, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoUploadComponent, "geo-upload", never, { "action": { "alias": "action"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "titlePrefix": { "alias": "titlePrefix"; "required": false; }; "selectText": { "alias": "selectText"; "required": false; }; "titleSuffix": { "alias": "titleSuffix"; "required": false; }; "listTitle": { "alias": "listTitle"; "required": false; }; "showListTitle": { "alias": "showListTitle"; "required": false; }; "fileList": { "alias": "fileList"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "data": { "alias": "data"; "required": false; }; "name": { "alias": "name"; "required": false; }; "withCredentials": { "alias": "withCredentials"; "required": false; }; "directory": { "alias": "directory"; "required": false; }; "customRequest": { "alias": "customRequest"; "required": false; }; "beforeUpload": { "alias": "beforeUpload"; "required": false; }; }, { "fileListChange": "fileListChange"; "change": "change"; "remove": "remove"; "reject": "reject"; }, never, never, true, never>;
59
+ }
@@ -0,0 +1,13 @@
1
+ import { NzUploadFile, NzUploadXHRArgs } from 'ng-zorro-antd/upload';
2
+ import { Subscription } from 'rxjs';
3
+ /** Extends Ant Design upload file with progress metadata for GEO UI. */
4
+ export interface GeoUploadFile extends NzUploadFile {
5
+ /** Bytes uploaded so far (for "100Kb / 200Kb"). */
6
+ loaded?: number;
7
+ /** Upload speed in bytes/sec (for "870kb/sec"). */
8
+ speed?: number;
9
+ }
10
+ export type GeoUploadCustomRequest = (item: NzUploadXHRArgs) => Subscription;
11
+ export declare function geoFormatBytes(bytes?: number | null): string;
12
+ export declare function geoFormatSpeed(bytesPerSec?: number | null): string;
13
+ export declare function geoUploadPercent(file: GeoUploadFile): number;
@@ -0,0 +1,55 @@
1
+ export * from './geo-alert/geo-alert.component';
2
+ export * from './geo-alert/geo-alert.types';
3
+ export * from './geo-back-button/geo-back-button.component';
4
+ export * from './geo-breadcrumb/geo-breadcrumb.component';
5
+ export * from './geo-breadcrumb/geo-breadcrumb.types';
6
+ export * from './geo-button/geo-button.component';
7
+ export * from './geo-button/geo-button.types';
8
+ export * from './geo-checkbox/geo-checkbox.component';
9
+ export * from './geo-confirm-modal/geo-confirm-modal.component';
10
+ export * from './geo-confirm-modal/geo-confirm-modal.types';
11
+ export * from './geo-date-picker/geo-date-picker.component';
12
+ export * from './geo-date-picker/geo-date-picker.types';
13
+ export * from './geo-date-range-picker/geo-date-range-picker.component';
14
+ export * from './geo-date-range-picker/geo-date-range-picker.types';
15
+ export * from './geo-file-picker/geo-file-picker.component';
16
+ export * from './geo-file-picker/geo-file-picker.types';
17
+ export * from './geo-upload/geo-upload.component';
18
+ export * from './geo-upload/geo-upload.types';
19
+ export * from './geo-form-modal/geo-form-modal.component';
20
+ export * from './geo-icon/geo-icon.component';
21
+ export * from './geo-icon/geo-icon.types';
22
+ export * from './geo-input/geo-input.component';
23
+ export * from './geo-pagination/geo-pagination.component';
24
+ export * from './geo-page-title/geo-page-title.component';
25
+ export * from './geo-radio/geo-radio.component';
26
+ export * from './geo-radio/geo-radio.types';
27
+ export * from './geo-select/geo-select.component';
28
+ export * from './geo-select/geo-select.types';
29
+ export * from './geo-slider/geo-slider.component';
30
+ export * from './geo-status-tag/geo-status-tag.component';
31
+ export * from './geo-status-tag/geo-status-tag.types';
32
+ export * from './geo-stepper/geo-stepper.component';
33
+ export * from './geo-stepper/geo-stepper.types';
34
+ export * from './geo-step-form-layout/geo-step-form-layout.component';
35
+ export * from './geo-step-form-layout/geo-step-form-layout.types';
36
+ export * from './geo-tabs/geo-tabs.component';
37
+ export * from './geo-tabs/geo-tabs.types';
38
+ export * from './geo-table/geo-table.component';
39
+ export * from './geo-table/geo-table.types';
40
+ export * from './geo-table/geo-table-filter/geo-table-filter.component';
41
+ export * from './geo-textarea/geo-textarea.component';
42
+ export * from './geo-toast/geo-toast.component';
43
+ export * from './geo-toast/geo-toast.service';
44
+ export * from './geo-toast/geo-toast.types';
45
+ export * from './geo-tree/geo-tree.component';
46
+ export * from './geo-tree/geo-tree.types';
47
+ export * from './geo-typography/geo-typography.component';
48
+ export * from './geo-typography/geo-typography.types';
49
+ export * from './geo-table/geo-row-actions/geo-row-actions.component';
50
+ export * from './geo-table/geo-row-actions/geo-row-actions.types';
51
+ export * from './geo-table/geo-column-picker/geo-column-picker.component';
52
+ export * from './geo-table/geo-column-picker/geo-column-picker.types';
53
+ export * from './geo-table/geo-column-picker/geo-column-picker.storage';
54
+ export * from './geo-table/geo-table-toolbar/geo-table-toolbar.component';
55
+ export * from './geo-table/geo-table-pagination/geo-table-pagination.component';
@@ -0,0 +1,76 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "ng-zorro-antd/affix";
3
+ import * as i2 from "ng-zorro-antd/alert";
4
+ import * as i3 from "ng-zorro-antd/anchor";
5
+ import * as i4 from "ng-zorro-antd/auto-complete";
6
+ import * as i5 from "ng-zorro-antd/avatar";
7
+ import * as i6 from "ng-zorro-antd/back-top";
8
+ import * as i7 from "ng-zorro-antd/badge";
9
+ import * as i8 from "ng-zorro-antd/button";
10
+ import * as i9 from "ng-zorro-antd/breadcrumb";
11
+ import * as i10 from "ng-zorro-antd/calendar";
12
+ import * as i11 from "ng-zorro-antd/card";
13
+ import * as i12 from "ng-zorro-antd/carousel";
14
+ import * as i13 from "ng-zorro-antd/cascader";
15
+ import * as i14 from "ng-zorro-antd/checkbox";
16
+ import * as i15 from "ng-zorro-antd/collapse";
17
+ import * as i16 from "ng-zorro-antd/comment";
18
+ import * as i17 from "ng-zorro-antd/date-picker";
19
+ import * as i18 from "ng-zorro-antd/descriptions";
20
+ import * as i19 from "ng-zorro-antd/divider";
21
+ import * as i20 from "ng-zorro-antd/drawer";
22
+ import * as i21 from "ng-zorro-antd/dropdown";
23
+ import * as i22 from "ng-zorro-antd/empty";
24
+ import * as i23 from "ng-zorro-antd/form";
25
+ import * as i24 from "ng-zorro-antd/grid";
26
+ import * as i25 from "ng-zorro-antd/i18n";
27
+ import * as i26 from "ng-zorro-antd/icon";
28
+ import * as i27 from "ng-zorro-antd/image";
29
+ import * as i28 from "ng-zorro-antd/input";
30
+ import * as i29 from "ng-zorro-antd/input-number";
31
+ import * as i30 from "ng-zorro-antd/layout";
32
+ import * as i31 from "ng-zorro-antd/list";
33
+ import * as i32 from "ng-zorro-antd/mention";
34
+ import * as i33 from "ng-zorro-antd/menu";
35
+ import * as i34 from "ng-zorro-antd/message";
36
+ import * as i35 from "ng-zorro-antd/modal";
37
+ import * as i36 from "ng-zorro-antd/core/no-animation";
38
+ import * as i37 from "ng-zorro-antd/notification";
39
+ import * as i38 from "ng-zorro-antd/page-header";
40
+ import * as i39 from "ng-zorro-antd/pagination";
41
+ import * as i40 from "ng-zorro-antd/popconfirm";
42
+ import * as i41 from "ng-zorro-antd/popover";
43
+ import * as i42 from "ng-zorro-antd/progress";
44
+ import * as i43 from "ng-zorro-antd/radio";
45
+ import * as i44 from "ng-zorro-antd/rate";
46
+ import * as i45 from "ng-zorro-antd/result";
47
+ import * as i46 from "ng-zorro-antd/select";
48
+ import * as i47 from "ng-zorro-antd/skeleton";
49
+ import * as i48 from "ng-zorro-antd/slider";
50
+ import * as i49 from "ng-zorro-antd/spin";
51
+ import * as i50 from "ng-zorro-antd/statistic";
52
+ import * as i51 from "ng-zorro-antd/steps";
53
+ import * as i52 from "ng-zorro-antd/switch";
54
+ import * as i53 from "ng-zorro-antd/table";
55
+ import * as i54 from "ng-zorro-antd/tabs";
56
+ import * as i55 from "ng-zorro-antd/tag";
57
+ import * as i56 from "ng-zorro-antd/time-picker";
58
+ import * as i57 from "ng-zorro-antd/timeline";
59
+ import * as i58 from "ng-zorro-antd/tooltip";
60
+ import * as i59 from "ng-zorro-antd/core/trans-button";
61
+ import * as i60 from "ng-zorro-antd/transfer";
62
+ import * as i61 from "ng-zorro-antd/tree";
63
+ import * as i62 from "ng-zorro-antd/tree-view";
64
+ import * as i63 from "ng-zorro-antd/tree-select";
65
+ import * as i64 from "ng-zorro-antd/typography";
66
+ import * as i65 from "ng-zorro-antd/upload";
67
+ import * as i66 from "ng-zorro-antd/core/wave";
68
+ import * as i67 from "ng-zorro-antd/resizable";
69
+ import * as i68 from "ng-zorro-antd/pipes";
70
+ import * as i69 from "ng-zorro-antd/space";
71
+ import * as i70 from "ng-zorro-antd/segmented";
72
+ export declare class NgZorroAntdModule {
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgZorroAntdModule, never>;
74
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgZorroAntdModule, never, never, [typeof i1.NzAffixModule, typeof i2.NzAlertModule, typeof i3.NzAnchorModule, typeof i4.NzAutocompleteModule, typeof i5.NzAvatarModule, typeof i6.NzBackTopModule, typeof i7.NzBadgeModule, typeof i8.NzButtonModule, typeof i9.NzBreadCrumbModule, typeof i10.NzCalendarModule, typeof i11.NzCardModule, typeof i12.NzCarouselModule, typeof i13.NzCascaderModule, typeof i14.NzCheckboxModule, typeof i15.NzCollapseModule, typeof i16.NzCommentModule, typeof i17.NzDatePickerModule, typeof i18.NzDescriptionsModule, typeof i19.NzDividerModule, typeof i20.NzDrawerModule, typeof i21.NzDropDownModule, typeof i22.NzEmptyModule, typeof i23.NzFormModule, typeof i24.NzGridModule, typeof i25.NzI18nModule, typeof i26.NzIconModule, typeof i27.NzImageModule, typeof i28.NzInputModule, typeof i29.NzInputNumberModule, typeof i30.NzLayoutModule, typeof i31.NzListModule, typeof i32.NzMentionModule, typeof i33.NzMenuModule, typeof i34.NzMessageModule, typeof i35.NzModalModule, typeof i36.NzNoAnimationModule, typeof i37.NzNotificationModule, typeof i38.NzPageHeaderModule, typeof i39.NzPaginationModule, typeof i40.NzPopconfirmModule, typeof i41.NzPopoverModule, typeof i42.NzProgressModule, typeof i43.NzRadioModule, typeof i44.NzRateModule, typeof i45.NzResultModule, typeof i46.NzSelectModule, typeof i47.NzSkeletonModule, typeof i48.NzSliderModule, typeof i49.NzSpinModule, typeof i50.NzStatisticModule, typeof i51.NzStepsModule, typeof i52.NzSwitchModule, typeof i53.NzTableModule, typeof i54.NzTabsModule, typeof i55.NzTagModule, typeof i56.NzTimePickerModule, typeof i57.NzTimelineModule, typeof i58.NzToolTipModule, typeof i59.NzTransButtonModule, typeof i60.NzTransferModule, typeof i61.NzTreeModule, typeof i62.NzTreeViewModule, typeof i63.NzTreeSelectModule, typeof i64.NzTypographyModule, typeof i65.NzUploadModule, typeof i66.NzWaveModule, typeof i67.NzResizableModule, typeof i68.NzPipesModule, typeof i69.NzSpaceModule, typeof i70.NzSegmentedModule]>;
75
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgZorroAntdModule>;
76
+ }
@@ -0,0 +1,184 @@
1
+ /**
2
+ * GEO UI design tokens (TypeScript).
3
+ * Mirror of CSS variables in design-tokens.scss — use for JS/theme config only.
4
+ */
5
+ export declare const geoColorTokens: {
6
+ readonly primary: {
7
+ readonly default: "#9A4828";
8
+ readonly hover: "#7D3A20";
9
+ readonly light: "#B5643F";
10
+ readonly dark: "#2C1810";
11
+ readonly background: "#FAF5ED";
12
+ readonly backgroundAlt: "#F5F0E8";
13
+ readonly border: "#E8E0D8";
14
+ readonly surfaceLight: "#F8E6DE";
15
+ readonly secondaryHover: "#FAF5ED";
16
+ };
17
+ readonly neutral: {
18
+ readonly 900: "#111827";
19
+ readonly 800: "#212121";
20
+ readonly 700: "#374151";
21
+ readonly 500: "#6B7280";
22
+ readonly 400: "#9CA3AF";
23
+ readonly 300: "#D1D5DB";
24
+ readonly 200: "#E5E7EB";
25
+ readonly 100: "#F3F4F6";
26
+ readonly white: "#FFFFFF";
27
+ readonly disabledText: "#8F9294";
28
+ };
29
+ readonly success: {
30
+ readonly dark: "#166534";
31
+ readonly default: "#22C55E";
32
+ readonly light: "#DCFCE7";
33
+ };
34
+ readonly error: {
35
+ readonly dark: "#991B1B";
36
+ readonly default: "#DC2626";
37
+ readonly light: "#FEE2E2";
38
+ };
39
+ readonly warning: {
40
+ readonly dark: "#92400E";
41
+ readonly default: "#F59E0B";
42
+ readonly light: "#FEF3C7";
43
+ };
44
+ readonly info: {
45
+ readonly dark: "#1E40AF";
46
+ readonly default: "#3B82F6";
47
+ readonly light: "#DBEAFE";
48
+ };
49
+ readonly teal: {
50
+ readonly dark: "#0F766E";
51
+ readonly default: "#14B8A6";
52
+ readonly light: "#CCFBF1";
53
+ };
54
+ };
55
+ export type GeoColorTokens = typeof geoColorTokens;
56
+ /** CSS custom property names for each token path. */
57
+ export declare const geoColorCssVars: {
58
+ readonly primary: {
59
+ readonly default: "--geo-color-primary-default";
60
+ readonly hover: "--geo-color-primary-hover";
61
+ readonly light: "--geo-color-primary-light";
62
+ readonly dark: "--geo-color-primary-dark";
63
+ readonly background: "--geo-color-primary-background";
64
+ readonly backgroundAlt: "--geo-color-primary-background-alt";
65
+ readonly border: "--geo-color-primary-border";
66
+ readonly surfaceLight: "--geo-color-primary-surface-light";
67
+ readonly secondaryHover: "--geo-color-primary-secondary-hover";
68
+ };
69
+ readonly neutral: {
70
+ readonly 900: "--geo-color-neutral-900";
71
+ readonly 800: "--geo-color-neutral-800";
72
+ readonly 700: "--geo-color-neutral-700";
73
+ readonly 500: "--geo-color-neutral-500";
74
+ readonly 400: "--geo-color-neutral-400";
75
+ readonly 300: "--geo-color-neutral-300";
76
+ readonly 200: "--geo-color-neutral-200";
77
+ readonly 100: "--geo-color-neutral-100";
78
+ readonly white: "--geo-color-neutral-white";
79
+ readonly disabledText: "--geo-color-neutral-disabled-text";
80
+ };
81
+ readonly success: {
82
+ readonly dark: "--geo-color-success-dark";
83
+ readonly default: "--geo-color-success-default";
84
+ readonly light: "--geo-color-success-light";
85
+ };
86
+ readonly error: {
87
+ readonly dark: "--geo-color-error-dark";
88
+ readonly default: "--geo-color-error-default";
89
+ readonly light: "--geo-color-error-light";
90
+ };
91
+ readonly warning: {
92
+ readonly dark: "--geo-color-warning-dark";
93
+ readonly default: "--geo-color-warning-default";
94
+ readonly light: "--geo-color-warning-light";
95
+ };
96
+ readonly info: {
97
+ readonly dark: "--geo-color-info-dark";
98
+ readonly default: "--geo-color-info-default";
99
+ readonly light: "--geo-color-info-light";
100
+ };
101
+ readonly teal: {
102
+ readonly dark: "--geo-color-teal-dark";
103
+ readonly default: "--geo-color-teal-default";
104
+ readonly light: "--geo-color-teal-light";
105
+ };
106
+ };
107
+ export declare function cssVar(name: string): string;
108
+ /** Typography design tokens (Inter + type scale). */
109
+ export declare const geoTypographyTokens: {
110
+ readonly fontFamily: "'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";
111
+ readonly weight: {
112
+ readonly regular: 400;
113
+ readonly medium: 500;
114
+ readonly semibold: 600;
115
+ readonly bold: 700;
116
+ };
117
+ readonly scale: {
118
+ readonly h1: {
119
+ readonly size: "28px";
120
+ readonly weight: 700;
121
+ readonly lineHeight: "36px";
122
+ };
123
+ readonly h2: {
124
+ readonly size: "24px";
125
+ readonly weight: 700;
126
+ readonly lineHeight: "32px";
127
+ };
128
+ readonly h3: {
129
+ readonly size: "20px";
130
+ readonly weight: 700;
131
+ readonly lineHeight: "28px";
132
+ };
133
+ readonly h4: {
134
+ readonly size: "16px";
135
+ readonly weight: 700;
136
+ readonly lineHeight: "24px";
137
+ };
138
+ readonly subtitle: {
139
+ readonly size: "14px";
140
+ readonly weight: 600;
141
+ readonly lineHeight: "20px";
142
+ };
143
+ readonly body: {
144
+ readonly size: "14px";
145
+ readonly weight: 400;
146
+ readonly lineHeight: "20px";
147
+ };
148
+ readonly bodySmall: {
149
+ readonly size: "13px";
150
+ readonly weight: 400;
151
+ readonly lineHeight: "18px";
152
+ };
153
+ readonly caption: {
154
+ readonly size: "12px";
155
+ readonly weight: 400;
156
+ readonly lineHeight: "16px";
157
+ };
158
+ readonly overline: {
159
+ readonly size: "11px";
160
+ readonly weight: 600;
161
+ readonly lineHeight: "16px";
162
+ };
163
+ readonly tiny: {
164
+ readonly size: "10px";
165
+ readonly weight: 400;
166
+ readonly lineHeight: "14px";
167
+ };
168
+ };
169
+ };
170
+ export type GeoTypographyTokens = typeof geoTypographyTokens;
171
+ /** Border radius design tokens (default 6px). */
172
+ export declare const geoRadiusTokens: {
173
+ readonly default: "6px";
174
+ readonly sm: "6px";
175
+ readonly md: "6px";
176
+ readonly lg: "6px";
177
+ };
178
+ export declare const geoRadiusCssVars: {
179
+ readonly default: "--geo-radius";
180
+ readonly sm: "--geo-radius-sm";
181
+ readonly md: "--geo-radius-md";
182
+ readonly lg: "--geo-radius-lg";
183
+ };
184
+ export type GeoRadiusTokens = typeof geoRadiusTokens;
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@geoit/ui",
3
+ "version": "0.0.2",
4
+ "description": "GEO UI — Angular 18 + ng-zorro design system components",
5
+ "peerDependencies": {
6
+ "@angular/animations": "^18.2.0",
7
+ "@angular/common": "^18.2.0",
8
+ "@angular/core": "^18.2.0",
9
+ "@angular/forms": "^18.2.0",
10
+ "@angular/cdk": "^18.2.0",
11
+ "@ant-design/icons-angular": "^18.0.0",
12
+ "ng-zorro-antd": "^18.2.0"
13
+ },
14
+ "dependencies": {
15
+ "tslib": "^2.3.0"
16
+ },
17
+ "sideEffects": false,
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "exports": {
22
+ "./ai/*": "./ai/*",
23
+ "./ai/catalog.json": "./ai/catalog.json",
24
+ "./ai/AGENTS.md": "./ai/AGENTS.md",
25
+ "./ai/recipes.md": "./ai/recipes.md",
26
+ "./package.json": {
27
+ "default": "./package.json"
28
+ },
29
+ ".": {
30
+ "types": "./index.d.ts",
31
+ "esm2022": "./esm2022/geoit-ui.mjs",
32
+ "esm": "./esm2022/geoit-ui.mjs",
33
+ "default": "./fesm2022/geoit-ui.mjs"
34
+ }
35
+ },
36
+ "module": "fesm2022/geoit-ui.mjs",
37
+ "typings": "index.d.ts"
38
+ }
@@ -0,0 +1,3 @@
1
+ export * from './lib/styles/tokens';
2
+ export * from './lib/ng-zorro/ng-zorro-antd.module';
3
+ export * from './lib/figma';