@geoit/ui 0.0.2 → 0.0.4

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 (38) hide show
  1. package/README.md +148 -12
  2. package/ai/AGENTS.md +5 -4
  3. package/ai/README.md +2 -2
  4. package/ai/catalog.json +3064 -424
  5. package/ai/components/geo-alert.md +75 -21
  6. package/ai/components/geo-back-button.md +64 -18
  7. package/ai/components/geo-breadcrumb.md +71 -12
  8. package/ai/components/geo-button.md +90 -27
  9. package/ai/components/geo-checkbox.md +69 -20
  10. package/ai/components/geo-column-picker.md +91 -18
  11. package/ai/components/geo-confirm-modal.md +93 -27
  12. package/ai/components/geo-date-picker.md +103 -29
  13. package/ai/components/geo-date-range-picker.md +99 -28
  14. package/ai/components/geo-file-picker.md +97 -26
  15. package/ai/components/geo-form-modal.md +112 -44
  16. package/ai/components/geo-icon.md +70 -16
  17. package/ai/components/geo-input.md +92 -29
  18. package/ai/components/geo-page-title.md +62 -16
  19. package/ai/components/geo-pagination.md +79 -24
  20. package/ai/components/geo-radio.md +108 -27
  21. package/ai/components/geo-row-actions.md +87 -19
  22. package/ai/components/geo-select.md +106 -28
  23. package/ai/components/geo-slider.md +72 -21
  24. package/ai/components/geo-status-tag.md +67 -15
  25. package/ai/components/geo-step-form-layout.md +122 -38
  26. package/ai/components/geo-stepper.md +82 -19
  27. package/ai/components/geo-table-filter.md +91 -29
  28. package/ai/components/geo-table-pagination.md +73 -23
  29. package/ai/components/geo-table-toolbar.md +84 -29
  30. package/ai/components/geo-table.md +194 -59
  31. package/ai/components/geo-tabs.md +101 -27
  32. package/ai/components/geo-textarea.md +82 -23
  33. package/ai/components/geo-toast.md +138 -27
  34. package/ai/components/geo-tree.md +96 -22
  35. package/ai/components/geo-typography.md +70 -19
  36. package/ai/components/geo-upload.md +110 -39
  37. package/ai/recipes.md +76 -4
  38. package/package.json +1 -1
@@ -1,16 +1,23 @@
1
1
  # geo-stepper
2
2
 
3
- > AI quick reference for **GeoStepperComponent**
3
+ > Complete usage reference for **GeoStepperComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Steps indicator (horizontal default). Active=primary, completed=success+check.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoStepperComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoStepperComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoStepperComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-stepper`
@@ -24,21 +31,53 @@ Multi-step flows; place inside geo-form-modal body or pages.
24
31
  ## Do not use when
25
32
  Tabs for peer sections — use geo-tabs.
26
33
 
34
+ ## How to use
35
+
36
+ Chỉ báo bước. [steps] {key,label}[]; [activeIndex]; orientation horizontal|vertical. Active=primary, completed=success+check.
37
+
38
+ ## Binding
39
+
40
+ Standalone presentational / container component — drive via Inputs and Outputs (no `ngModel` unless documented).
41
+
27
42
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `steps` | See component TS / Storybook Controls |
31
- | `activeIndex` | See component TS / Storybook Controls |
32
- | `orientation` | See component TS / Storybook Controls |
33
- | `clickable` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `steps` | `GeoStepperStep[]` | `[]` | |
49
+ | `activeIndex` | `number` | `0` | — |
50
+ | `orientation` | `'vertical' \| 'horizontal'` | `'horizontal'` | Mặc định horizontal theo design form modal. |
51
+ | `clickable` | `boolean` | `true` | Cho phép click để đổi bước. |
34
52
 
35
53
  ## Outputs
36
- | Output | Notes |
37
- |--------|-------|
38
- | `activeIndexChange` | EventEmitter |
39
- | `stepSelect` | EventEmitter |
40
54
 
41
- ## Example
55
+ | Output | Payload | Description |
56
+ |--------|---------|-------------|
57
+ | `activeIndexChange` | `EventEmitter<number>` | — |
58
+ | `stepSelect` | `EventEmitter<{ index: number; step: GeoStepperStep }>` | — |
59
+
60
+ ## Related types
61
+
62
+ From `figma/geo-stepper/geo-stepper.types.ts`:
63
+
64
+ ```ts
65
+ export interface GeoStepperStep {
66
+ /** Unique key (optional). */
67
+ key?: string;
68
+ /** Label hiển thị bên cạnh số bước. */
69
+ label: string;
70
+ /** Disable click chọn bước. */
71
+ disabled?: boolean;
72
+ }
73
+
74
+ export type GeoStepperOrientation = 'vertical' | 'horizontal';
75
+ ```
76
+
77
+ ## Examples
78
+
79
+ ### Basic
80
+
42
81
  ```html
43
82
  <geo-stepper
44
83
  [steps]="[
@@ -51,13 +90,37 @@ Tabs for peer sections — use geo-tabs.
51
90
  ></geo-stepper>
52
91
  ```
53
92
 
93
+ ### Full options
94
+
95
+ ```html
96
+ <geo-stepper
97
+ [steps]="steps"
98
+ [activeIndex]="activeIndex"
99
+ orientation="vertical"
100
+ [clickable]="true"
101
+ (activeIndexChange)="activeIndex = $event"
102
+ (stepSelect)="onStepSelect($event)"
103
+ ></geo-stepper>
104
+ ```
105
+
106
+ ## Tips
107
+
108
+ - Trong dialog: đặt trong geo-form-modal body.
109
+ - Wizard trang: dùng geo-step-form-layout.
110
+ - clickable=false khi bắt buộc đi tuần tự.
111
+ ## Related components
112
+
113
+ - [`geo-form-modal`](./geo-form-modal.md)
114
+ - [`geo-step-form-layout`](./geo-step-form-layout.md)
115
+ - [`geo-tabs`](./geo-tabs.md)
116
+ ## Package path
117
+ `node_modules/@geoit/ui/ai/components/geo-stepper.md`
118
+
54
119
  ## Source
55
120
  `projects/geo-ui/src/lib/figma/geo-stepper/geo-stepper.component.ts`
56
121
 
57
- ## Storybook
58
- GEO / related story for `geo-stepper`
59
-
60
- ## Rules for AI
61
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
122
+ ## Rules for AI / consumers
123
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
62
124
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
63
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
125
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
126
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,24 @@
1
1
  # geo-table-filter
2
2
 
3
- > AI quick reference for **GeoTableFilterComponent**
3
+ > Complete usage reference for **GeoTableFilterComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Table filter bar with search + advanced filters.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoTableFilterComponent } from '@geoit/ui';
14
+ import { FormsModule } from '@angular/forms'; // when using [(ngModel)]
11
15
  ```
12
16
 
13
- Standalone component — add to `imports: [GeoTableFilterComponent]` of the consuming standalone component/module.
17
+ Add to the consuming standalone component:
18
+
19
+ ```ts
20
+ imports: [GeoTableFilterComponent, FormsModule]
21
+ ```
14
22
 
15
23
  ## Selector
16
24
  `geo-table-filter`
@@ -24,42 +32,96 @@ Above geo-table for query/filter UX.
24
32
  ## Do not use when
25
33
  Standalone forms unrelated to tables.
26
34
 
35
+ ## How to use
36
+
37
+ Thanh lọc bảng: ô tìm + bộ lọc nâng cao (ng-content). (search)/(reset); advancedExpanded + advancedFilterCount.
38
+
39
+ ## Binding
40
+
41
+ Standalone presentational / container component — drive via Inputs and Outputs (no `ngModel` unless documented).
42
+
27
43
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `columns` | See component TS / Storybook Controls |
31
- | `responsiveColumns` | See component TS / Storybook Controls |
32
- | `responsiveCollapse` | See component TS / Storybook Controls |
33
- | `mobileBreakpoint` | See component TS / Storybook Controls |
34
- | `gap` | See component TS / Storybook Controls |
35
- | `searchLabel` | See component TS / Storybook Controls |
36
- | `searchLoading` | See component TS / Storybook Controls |
37
- | `showAdvancedToggle` | See component TS / Storybook Controls |
38
- | `showReset` | See component TS / Storybook Controls |
39
- | `advancedExpanded` | See component TS / Storybook Controls |
40
- | `advancedFilterCount` | See component TS / Storybook Controls |
41
- | `filterToggleTitle` | See component TS / Storybook Controls |
42
- | `resetTitle` | See component TS / Storybook Controls |
44
+
45
+ Every supported Input (do not invent others):
46
+
47
+ | Input | Type | Default | Description |
48
+ |-------|------|---------|-------------|
49
+ | `columns` | `number` | `4` | Số cột field mỗi hàng (mặc định 4 → tổng 5 cột gồm actions). Ví dụ: 4 field + columns=2 → 2 hàng × 2 cột field (+ 1 cột actions). |
50
+ | `responsiveColumns` | `boolean` | `true` | Khi `true` (mặc định): số cột thực tế ≤ `columns` theo breakpoint. Khi `false`: luôn dùng đúng `columns`. |
51
+ | `responsiveCollapse` | `boolean` | `true` | Đưa actions lên hàng đầu khi màn hẹp (stacked). |
52
+ | `mobileBreakpoint` | `number` | `1024` | Breakpoint chuyển layout stacked (px). |
53
+ | `gap` | `number` | `15` | Khoảng cách grid (px). |
54
+ | `searchLabel` | `string` | `'Tìm kiếm'` | |
55
+ | `searchLoading` | `boolean` | `false` | |
56
+ | `showAdvancedToggle` | `boolean` | `true` | Hiện nút mở/đóng slot `[advanced]`. |
57
+ | `showReset` | `boolean` | `true` | |
58
+ | `advancedExpanded` | `boolean` | `false` | Mở panel field nâng cao (`[advanced]`). |
59
+ | `advancedFilterCount` | `number` | `0` | Số field advanced đang có giá trị — hiện badge trên nút expand. Parent tự tính (vd. `countFilledFilters(query, ADVANCED_KEYS)`). |
60
+ | `filterToggleTitle` | `string` | `'Bộ lọc nâng cao'` | — |
61
+ | `resetTitle` | `string` | `'Xóa bộ lọc'` | — |
43
62
 
44
63
  ## Outputs
45
- | Output | Notes |
46
- |--------|-------|
47
- | `search` | EventEmitter |
48
- | `reset` | EventEmitter |
49
- | `advancedExpandedChange` | EventEmitter |
50
64
 
51
- ## Example
65
+ | Output | Payload | Description |
66
+ |--------|---------|-------------|
67
+ | `search` | `EventEmitter<void>` | — |
68
+ | `reset` | `EventEmitter<void>` | — |
69
+ | `advancedExpandedChange` | `EventEmitter<boolean>` | — |
70
+
71
+
72
+ ## Examples
73
+
74
+ ### Basic
75
+
52
76
  ```html
53
77
  <geo-table-filter (search)="onSearch()" (reset)="onReset()"></geo-table-filter>
54
78
  ```
55
79
 
80
+ ### Full options
81
+
82
+ ```html
83
+ <geo-table-filter
84
+ [columns]="4"
85
+ [responsiveColumns]="true"
86
+ [responsiveCollapse]="true"
87
+ [mobileBreakpoint]="1024"
88
+ [gap]="15"
89
+ searchLabel="Tìm kiếm"
90
+ [searchLoading]="searching"
91
+ [showAdvancedToggle]="true"
92
+ [showReset]="true"
93
+ [(advancedExpanded)]="advancedOpen"
94
+ [advancedFilterCount]="activeFilterCount"
95
+ filterToggleTitle="Bộ lọc nâng cao"
96
+ resetTitle="Xóa bộ lọc"
97
+ (search)="onSearch()"
98
+ (reset)="onReset()"
99
+ >
100
+ <geo-select label="Trạng thái" [options]="statusOptions" [(ngModel)]="status" [block]="true"></geo-select>
101
+ <geo-date-range-picker label="Thời gian" [(ngModel)]="range" [block]="true"></geo-date-range-picker>
102
+ </geo-table-filter>
103
+ ```
104
+
105
+ ## Tips
106
+
107
+ - Đặt field lọc nâng cao trong ng-content khi expanded.
108
+ - responsiveColumns/collapse cho mobile.
109
+ - searchLoading khi đang gọi API.
110
+ ## Related components
111
+
112
+ - [`geo-table`](./geo-table.md)
113
+ - [`geo-table-toolbar`](./geo-table-toolbar.md)
114
+ - [`geo-input`](./geo-input.md)
115
+ - [`geo-select`](./geo-select.md)
116
+ - [`geo-date-range-picker`](./geo-date-range-picker.md)
117
+ ## Package path
118
+ `node_modules/@geoit/ui/ai/components/geo-table-filter.md`
119
+
56
120
  ## Source
57
121
  `projects/geo-ui/src/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.ts`
58
122
 
59
- ## Storybook
60
- GEO / related story for `geo-table-filter`
61
-
62
- ## Rules for AI
63
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
123
+ ## Rules for AI / consumers
124
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
64
125
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
65
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
126
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
127
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,23 @@
1
1
  # geo-table-pagination
2
2
 
3
- > AI quick reference for **GeoTablePaginationComponent**
3
+ > Complete usage reference for **GeoTablePaginationComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Table-specific pagination footer (range label + size).
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoTablePaginationComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoTablePaginationComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoTablePaginationComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-table-pagination`
@@ -24,36 +31,79 @@ Custom table footers; geo-table has built-in paging too.
24
31
  ## Do not use when
25
32
  Non-table paging — use geo-pagination.
26
33
 
34
+ ## How to use
35
+
36
+ Footer phân trang riêng cho bảng (nhãn khoảng + đổi page size). [pageIndex]/[pageSize]/[total]; showTotalRange mặc định true.
37
+
38
+ ## Binding
39
+
40
+ Standalone presentational / container component — drive via Inputs and Outputs (no `ngModel` unless documented).
41
+
27
42
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `pageIndex` | See component TS / Storybook Controls |
31
- | `pageSize` | See component TS / Storybook Controls |
32
- | `total` | See component TS / Storybook Controls |
33
- | `pageSizeOptions` | See component TS / Storybook Controls |
34
- | `showSizeChanger` | See component TS / Storybook Controls |
35
- | `hideOnSinglePage` | See component TS / Storybook Controls |
36
- | `showTotalRange` | See component TS / Storybook Controls |
37
- | `sizeLabel` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `pageIndex` | `number` | `1` | |
49
+ | `pageSize` | `number` | `10` | |
50
+ | `total` | `number` | `0` | |
51
+ | `pageSizeOptions` | `number[]` | `DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS` | |
52
+ | `showSizeChanger` | `boolean` | `true` | |
53
+ | `hideOnSinglePage` | `boolean` | `false` | — |
54
+ | `showTotalRange` | `boolean` | `true` | — |
55
+ | `sizeLabel` | `string` | `'Hiển thị'` | — |
38
56
 
39
57
  ## Outputs
40
- | Output | Notes |
41
- |--------|-------|
42
- | `pageIndexChange` | EventEmitter |
43
- | `pageSizeChange` | EventEmitter |
44
58
 
45
- ## Example
59
+ | Output | Payload | Description |
60
+ |--------|---------|-------------|
61
+ | `pageIndexChange` | `EventEmitter<number>` | — |
62
+ | `pageSizeChange` | `EventEmitter<number>` | — |
63
+
64
+
65
+ ## Examples
66
+
67
+ ### Basic
68
+
46
69
  ```html
47
70
  <geo-table-pagination [pageIndex]="1" [pageSize]="10" [total]="200"></geo-table-pagination>
48
71
  ```
49
72
 
73
+ ### Full options
74
+
75
+ ```html
76
+ <geo-table-pagination
77
+ [pageIndex]="pageIndex"
78
+ [pageSize]="pageSize"
79
+ [total]="total"
80
+ [pageSizeOptions]="[10, 20, 50, 100]"
81
+ [showSizeChanger]="true"
82
+ [hideOnSinglePage]="false"
83
+ [showTotalRange]="true"
84
+ sizeLabel="Hiển thị"
85
+ (pageIndexChange)="pageIndex = $event"
86
+ (pageSizeChange)="pageSize = $event"
87
+ ></geo-table-pagination>
88
+ ```
89
+
90
+ ## Tips
91
+
92
+ - geo-table đã có pagination tích hợp — dùng component này khi custom layout.
93
+ - sizeLabel mặc định 'Hiển thị'.
94
+ - pageSizeOptions mặc định [10,20,50,100].
95
+ ## Related components
96
+
97
+ - [`geo-table`](./geo-table.md)
98
+ - [`geo-pagination`](./geo-pagination.md)
99
+ ## Package path
100
+ `node_modules/@geoit/ui/ai/components/geo-table-pagination.md`
101
+
50
102
  ## Source
51
103
  `projects/geo-ui/src/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.ts`
52
104
 
53
- ## Storybook
54
- GEO / related story for `geo-table-pagination`
55
-
56
- ## Rules for AI
57
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
105
+ ## Rules for AI / consumers
106
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
58
107
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
59
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
108
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
109
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,23 @@
1
1
  # geo-table-toolbar
2
2
 
3
- > AI quick reference for **GeoTableToolbarComponent**
3
+ > Complete usage reference for **GeoTableToolbarComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Table toolbar: result count, delete/export/add, column toggle.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoTableToolbarComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoTableToolbarComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoTableToolbarComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-table-toolbar`
@@ -24,41 +31,89 @@ Above geo-table for bulk actions.
24
31
  ## Do not use when
25
32
  Page header actions unrelated to table.
26
33
 
34
+ ## How to use
35
+
36
+ Toolbar danh sách: số kết quả, xóa/xuất/thêm, ẩn hiện cột. (addClick)/(deleteClick)/(exportClick)/(columnApply).
37
+
38
+ ## Binding
39
+
40
+ Standalone presentational / container component — drive via Inputs and Outputs (no `ngModel` unless documented).
41
+
27
42
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `resultLabel` | See component TS / Storybook Controls |
31
- | `resultCount` | See component TS / Storybook Controls |
32
- | `selectedCount` | See component TS / Storybook Controls |
33
- | `showDelete` | See component TS / Storybook Controls |
34
- | `showExport` | See component TS / Storybook Controls |
35
- | `showColumnToggle` | See component TS / Storybook Controls |
36
- | `showAdd` | See component TS / Storybook Controls |
37
- | `addLabel` | See component TS / Storybook Controls |
38
- | `columnItems` | See component TS / Storybook Controls |
39
- | `columnStorageKey` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `resultLabel` | `string` | `''` | |
49
+ | `resultCount` | `number \| null` | `null` | |
50
+ | `selectedCount` | `number` | `0` | |
51
+ | `showDelete` | `boolean` | `true` | |
52
+ | `showExport` | `boolean` | `true` | |
53
+ | `showColumnToggle` | `boolean` | `true` | |
54
+ | `showAdd` | `boolean` | `true` | |
55
+ | `addLabel` | `string` | `'Thêm mới'` | — |
56
+ | `columnItems` | `GeoColumnPickerItem[]` | `[]` | — |
57
+ | `columnStorageKey` | `string` | — | Key lưu trạng thái ẩn/hiện cột trong sessionStorage |
40
58
 
41
59
  ## Outputs
42
- | Output | Notes |
43
- |--------|-------|
44
- | `deleteClick` | EventEmitter |
45
- | `exportClick` | EventEmitter |
46
- | `toggleColumns` | EventEmitter |
47
- | `columnApply` | EventEmitter |
48
- | `addClick` | EventEmitter |
49
-
50
- ## Example
60
+
61
+ | Output | Payload | Description |
62
+ |--------|---------|-------------|
63
+ | `deleteClick` | `EventEmitter<void>` | — |
64
+ | `exportClick` | `EventEmitter<void>` | — |
65
+ | `toggleColumns` | `EventEmitter<void>` | — |
66
+ | `columnApply` | `EventEmitter<GeoColumnPickerApplyPayload>` | — |
67
+ | `addClick` | `EventEmitter<void>` | — |
68
+
69
+
70
+ ## Examples
71
+
72
+ ### Basic
73
+
51
74
  ```html
52
75
  <geo-table-toolbar [resultCount]="20" [showAdd]="true" (addClick)="add()"></geo-table-toolbar>
53
76
  ```
54
77
 
78
+ ### Full options
79
+
80
+ ```html
81
+ <geo-table-toolbar
82
+ resultLabel="Kết quả"
83
+ [resultCount]="total"
84
+ [selectedCount]="selectedKeys.length"
85
+ [showDelete]="true"
86
+ [showExport]="true"
87
+ [showColumnToggle]="true"
88
+ [showAdd]="true"
89
+ addLabel="Thêm mới"
90
+ [columnItems]="columnPickerItems"
91
+ columnStorageKey="ho-so-columns"
92
+ (deleteClick)="onBulkDelete()"
93
+ (exportClick)="onExport()"
94
+ (columnApply)="onColumns($event)"
95
+ (addClick)="openCreate()"
96
+ ></geo-table-toolbar>
97
+ ```
98
+
99
+ ## Tips
100
+
101
+ - selectedCount > 0 để bật xóa hàng loạt.
102
+ - columnItems + columnStorageKey cho column picker tích hợp.
103
+ - Đặt ngay trên geo-table.
104
+ ## Related components
105
+
106
+ - [`geo-table`](./geo-table.md)
107
+ - [`geo-column-picker`](./geo-column-picker.md)
108
+ - [`geo-button`](./geo-button.md)
109
+ ## Package path
110
+ `node_modules/@geoit/ui/ai/components/geo-table-toolbar.md`
111
+
55
112
  ## Source
56
113
  `projects/geo-ui/src/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.ts`
57
114
 
58
- ## Storybook
59
- GEO / related story for `geo-table-toolbar`
60
-
61
- ## Rules for AI
62
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
115
+ ## Rules for AI / consumers
116
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
63
117
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
64
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
118
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
119
+ - Copy examples and adapt labels/bindings only.