@geoit/ui 0.0.4 → 0.0.5

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 (258) hide show
  1. package/AGENTS.md +12 -8
  2. package/README.md +49 -62
  3. package/ai/AGENTS.md +38 -28
  4. package/ai/README.md +35 -1
  5. package/ai/catalog.json +2796 -288
  6. package/ai/components/geo-alert.md +3 -3
  7. package/ai/components/geo-back-button.md +2 -2
  8. package/ai/components/geo-breadcrumb.md +1 -1
  9. package/ai/components/geo-button.md +3 -3
  10. package/ai/components/geo-chart.md +103 -0
  11. package/ai/components/geo-checkbox.md +4 -6
  12. package/ai/components/geo-column-picker.md +3 -3
  13. package/ai/components/geo-confirm-modal.md +4 -5
  14. package/ai/components/geo-dashboard.md +91 -0
  15. package/ai/components/geo-date-picker.md +5 -3
  16. package/ai/components/geo-date-range-picker.md +5 -3
  17. package/ai/components/geo-empty-state.md +75 -0
  18. package/ai/components/geo-feedback-form.md +97 -0
  19. package/ai/components/geo-file-picker.md +4 -2
  20. package/ai/components/geo-forgot-password.md +78 -0
  21. package/ai/components/geo-form-modal.md +9 -10
  22. package/ai/components/geo-icon.md +3 -3
  23. package/ai/components/geo-input.md +8 -6
  24. package/ai/components/geo-layout-footer.md +70 -0
  25. package/ai/components/geo-layout-header-actions.md +82 -0
  26. package/ai/components/geo-layout-header.md +89 -0
  27. package/ai/components/geo-layout-sidebar.md +86 -0
  28. package/ai/components/geo-layout.md +155 -0
  29. package/ai/components/geo-list-page.md +72 -0
  30. package/ai/components/geo-login.md +94 -0
  31. package/ai/components/geo-map-admin-filter.md +80 -0
  32. package/ai/components/geo-map-basemap-switcher.md +75 -0
  33. package/ai/components/geo-map-help.md +72 -0
  34. package/ai/components/geo-map-layer-card.md +73 -0
  35. package/ai/components/geo-map-layer-panel.md +75 -0
  36. package/ai/components/geo-map-layers-drawer.md +78 -0
  37. package/ai/components/geo-map-legend.md +74 -0
  38. package/ai/components/geo-map-locate.md +75 -0
  39. package/ai/components/geo-map-location-chip.md +71 -0
  40. package/ai/components/geo-map-measure.md +74 -0
  41. package/ai/components/geo-map-opacity.md +75 -0
  42. package/ai/components/geo-map-parcel-popup.md +79 -0
  43. package/ai/components/geo-map-search.md +83 -0
  44. package/ai/components/geo-map-shell.md +110 -0
  45. package/ai/components/geo-map-snapshot.md +75 -0
  46. package/ai/components/geo-map-swipe.md +73 -0
  47. package/ai/components/geo-map-toolbar.md +76 -0
  48. package/ai/components/geo-map-zoom.md +74 -0
  49. package/ai/components/geo-map.md +205 -0
  50. package/ai/components/geo-overlap-result.md +88 -0
  51. package/ai/components/geo-page-header.md +72 -0
  52. package/ai/components/geo-page-title.md +1 -1
  53. package/ai/components/geo-pagination.md +4 -7
  54. package/ai/components/geo-radio.md +3 -1
  55. package/ai/components/geo-row-actions.md +3 -3
  56. package/ai/components/geo-select.md +4 -2
  57. package/ai/components/geo-slider.md +5 -7
  58. package/ai/components/geo-stat-card.md +98 -0
  59. package/ai/components/geo-status-tag.md +2 -2
  60. package/ai/components/geo-step-form-layout.md +7 -8
  61. package/ai/components/geo-stepper.md +3 -4
  62. package/ai/components/geo-table-filter.md +4 -5
  63. package/ai/components/geo-table-pagination.md +4 -7
  64. package/ai/components/geo-table-toolbar.md +7 -7
  65. package/ai/components/geo-table.md +17 -20
  66. package/ai/components/geo-tabs.md +4 -6
  67. package/ai/components/geo-textarea.md +4 -2
  68. package/ai/components/geo-toast.md +4 -4
  69. package/ai/components/geo-tree.md +4 -6
  70. package/ai/components/geo-typography.md +1 -1
  71. package/ai/components/geo-upload.md +9 -10
  72. package/ai/mockup.html +1194 -0
  73. package/ai/recipes.md +98 -85
  74. package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +19 -36
  75. package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +14 -24
  76. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +8 -11
  77. package/esm2022/lib/figma/geo-button/geo-button.component.mjs +30 -59
  78. package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +88 -0
  79. package/esm2022/lib/figma/geo-chart/geo-chart.types.mjs +2 -0
  80. package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +11 -22
  81. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +22 -54
  82. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.component.mjs +49 -0
  83. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.types.mjs +2 -0
  84. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +48 -78
  85. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +47 -75
  86. package/esm2022/lib/figma/geo-empty-state/geo-empty-state.component.mjs +25 -0
  87. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.component.mjs +75 -0
  88. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.types.mjs +2 -0
  89. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +59 -81
  90. package/esm2022/lib/figma/geo-forgot-password/geo-forgot-password.component.mjs +51 -0
  91. package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +45 -112
  92. package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +22 -32
  93. package/esm2022/lib/figma/geo-input/geo-input.component.mjs +41 -70
  94. package/esm2022/lib/figma/geo-layout/footer/geo-layout-footer.component.mjs +18 -0
  95. package/esm2022/lib/figma/geo-layout/geo-layout-actions.directive.mjs +15 -0
  96. package/esm2022/lib/figma/geo-layout/geo-layout.component.mjs +79 -0
  97. package/esm2022/lib/figma/geo-layout/geo-layout.types.mjs +42 -0
  98. package/esm2022/lib/figma/geo-layout/header/geo-layout-header.component.mjs +60 -0
  99. package/esm2022/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.mjs +70 -0
  100. package/esm2022/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.mjs +90 -0
  101. package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +22 -0
  102. package/esm2022/lib/figma/geo-login/geo-login.component.mjs +58 -0
  103. package/esm2022/lib/figma/geo-login/geo-login.types.mjs +2 -0
  104. package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +52 -0
  105. package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +61 -0
  106. package/esm2022/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.mjs +26 -0
  107. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.mjs +24 -0
  108. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs +146 -0
  109. package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +37 -0
  110. package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +30 -0
  111. package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +72 -0
  112. package/esm2022/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.mjs +21 -0
  113. package/esm2022/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.mjs +375 -0
  114. package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +94 -0
  115. package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +136 -0
  116. package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +182 -0
  117. package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +577 -0
  118. package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +93 -0
  119. package/esm2022/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.mjs +129 -0
  120. package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +64 -0
  121. package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +295 -0
  122. package/esm2022/lib/figma/geo-map/geo-map-toolbar.icons.mjs +18 -0
  123. package/esm2022/lib/figma/geo-map/geo-map.component.mjs +144 -0
  124. package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +497 -0
  125. package/esm2022/lib/figma/geo-map/geo-map.controller.mjs +71 -0
  126. package/esm2022/lib/figma/geo-map/geo-map.types.mjs +2 -0
  127. package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +368 -0
  128. package/esm2022/lib/figma/geo-map/services/geo-map-projection.service.mjs +110 -0
  129. package/esm2022/lib/figma/geo-map/services/geo-map.service.mjs +540 -0
  130. package/esm2022/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.mjs +47 -0
  131. package/esm2022/lib/figma/geo-map/utils/geo-map-interactions.util.mjs +30 -0
  132. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.component.mjs +25 -0
  133. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.types.mjs +2 -0
  134. package/esm2022/lib/figma/geo-page-header/geo-page-header.component.mjs +23 -0
  135. package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +20 -35
  136. package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +13 -43
  137. package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +32 -52
  138. package/esm2022/lib/figma/geo-select/geo-select.component.mjs +46 -72
  139. package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +12 -28
  140. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.component.mjs +163 -0
  141. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.types.mjs +2 -0
  142. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +23 -27
  143. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +39 -96
  144. package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +18 -33
  145. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +14 -24
  146. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +18 -36
  147. package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +41 -98
  148. package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +40 -73
  149. package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +26 -56
  150. package/esm2022/lib/figma/geo-table/geo-table.component.mjs +110 -210
  151. package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +33 -63
  152. package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +28 -44
  153. package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +18 -39
  154. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +12 -40
  155. package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +49 -64
  156. package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +50 -101
  157. package/esm2022/lib/figma/index.mjs +50 -1
  158. package/esm2022/lib/styles/tokens.mjs +56 -24
  159. package/fesm2022/geoit-ui.mjs +5981 -1825
  160. package/fesm2022/geoit-ui.mjs.map +1 -1
  161. package/lib/figma/geo-alert/geo-alert.component.d.ts +10 -11
  162. package/lib/figma/geo-back-button/geo-back-button.component.d.ts +6 -7
  163. package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +2 -2
  164. package/lib/figma/geo-button/geo-button.component.d.ts +21 -17
  165. package/lib/figma/geo-chart/geo-chart.component.d.ts +40 -0
  166. package/lib/figma/geo-chart/geo-chart.types.d.ts +13 -0
  167. package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +6 -7
  168. package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +15 -17
  169. package/lib/figma/geo-dashboard/geo-dashboard.component.d.ts +29 -0
  170. package/lib/figma/geo-dashboard/geo-dashboard.types.d.ts +7 -0
  171. package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +26 -21
  172. package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +25 -20
  173. package/lib/figma/geo-empty-state/geo-empty-state.component.d.ts +17 -0
  174. package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +36 -0
  175. package/lib/figma/geo-feedback-form/geo-feedback-form.types.d.ts +8 -0
  176. package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +23 -20
  177. package/lib/figma/geo-forgot-password/geo-forgot-password.component.d.ts +24 -0
  178. package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +33 -35
  179. package/lib/figma/geo-icon/geo-icon.component.d.ts +7 -7
  180. package/lib/figma/geo-input/geo-input.component.d.ts +23 -21
  181. package/lib/figma/geo-layout/footer/geo-layout-footer.component.d.ts +10 -0
  182. package/lib/figma/geo-layout/geo-layout-actions.directive.d.ts +6 -0
  183. package/lib/figma/geo-layout/geo-layout.component.d.ts +48 -0
  184. package/lib/figma/geo-layout/geo-layout.types.d.ts +44 -0
  185. package/lib/figma/geo-layout/header/geo-layout-header.component.d.ts +31 -0
  186. package/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.d.ts +32 -0
  187. package/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.d.ts +34 -0
  188. package/lib/figma/geo-list-page/geo-list-page.component.d.ts +16 -0
  189. package/lib/figma/geo-login/geo-login.component.d.ts +27 -0
  190. package/lib/figma/geo-login/geo-login.types.d.ts +6 -0
  191. package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +28 -0
  192. package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +26 -0
  193. package/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.d.ts +20 -0
  194. package/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.d.ts +15 -0
  195. package/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.d.ts +40 -0
  196. package/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.d.ts +25 -0
  197. package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +18 -0
  198. package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.d.ts +24 -0
  199. package/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.d.ts +14 -0
  200. package/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.d.ts +49 -0
  201. package/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.d.ts +30 -0
  202. package/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.d.ts +44 -0
  203. package/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.d.ts +56 -0
  204. package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +103 -0
  205. package/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.d.ts +21 -0
  206. package/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.d.ts +33 -0
  207. package/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.d.ts +30 -0
  208. package/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.d.ts +67 -0
  209. package/lib/figma/geo-map/geo-map-toolbar.icons.d.ts +17 -0
  210. package/lib/figma/geo-map/geo-map.component.d.ts +53 -0
  211. package/lib/figma/geo-map/geo-map.constants.d.ts +73 -0
  212. package/lib/figma/geo-map/geo-map.controller.d.ts +49 -0
  213. package/lib/figma/geo-map/geo-map.types.d.ts +224 -0
  214. package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +42 -0
  215. package/lib/figma/geo-map/services/geo-map-projection.service.d.ts +32 -0
  216. package/lib/figma/geo-map/services/geo-map.service.d.ts +99 -0
  217. package/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.d.ts +13 -0
  218. package/lib/figma/geo-map/utils/geo-map-interactions.util.d.ts +9 -0
  219. package/lib/figma/geo-overlap-result/geo-overlap-result.component.d.ts +18 -0
  220. package/lib/figma/geo-overlap-result/geo-overlap-result.types.d.ts +7 -0
  221. package/lib/figma/geo-page-header/geo-page-header.component.d.ts +16 -0
  222. package/lib/figma/geo-page-title/geo-page-title.component.d.ts +9 -9
  223. package/lib/figma/geo-pagination/geo-pagination.component.d.ts +9 -14
  224. package/lib/figma/geo-radio/geo-radio.component.d.ts +17 -15
  225. package/lib/figma/geo-select/geo-select.component.d.ts +24 -19
  226. package/lib/figma/geo-slider/geo-slider.component.d.ts +7 -9
  227. package/lib/figma/geo-stat-card/geo-stat-card.component.d.ts +50 -0
  228. package/lib/figma/geo-stat-card/geo-stat-card.types.d.ts +11 -0
  229. package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +7 -7
  230. package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +27 -29
  231. package/lib/figma/geo-stepper/geo-stepper.component.d.ts +6 -8
  232. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +6 -7
  233. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +11 -12
  234. package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +21 -28
  235. package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +17 -20
  236. package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +17 -18
  237. package/lib/figma/geo-table/geo-table.component.d.ts +58 -62
  238. package/lib/figma/geo-tabs/geo-tabs.component.d.ts +14 -17
  239. package/lib/figma/geo-textarea/geo-textarea.component.d.ts +15 -13
  240. package/lib/figma/geo-toast/geo-toast.component.d.ts +11 -12
  241. package/lib/figma/geo-tree/geo-tree.component.d.ts +8 -13
  242. package/lib/figma/geo-typography/geo-typography.component.d.ts +13 -13
  243. package/lib/figma/geo-upload/geo-upload.component.d.ts +26 -28
  244. package/lib/figma/index.d.ts +49 -0
  245. package/lib/styles/tokens.d.ts +56 -23
  246. package/package.json +4 -2
  247. package/src/lib/figma/geo-map/assets/toolbar/fullscreen.svg +8 -0
  248. package/src/lib/figma/geo-map/assets/toolbar/home.svg +3 -0
  249. package/src/lib/figma/geo-map/assets/toolbar/layers.svg +3 -0
  250. package/src/lib/figma/geo-map/assets/toolbar/measure-area.svg +12 -0
  251. package/src/lib/figma/geo-map/assets/toolbar/measure-distance.svg +5 -0
  252. package/src/lib/figma/geo-map/assets/toolbar/pan.svg +13 -0
  253. package/src/lib/figma/geo-map/assets/toolbar/search.svg +3 -0
  254. package/src/lib/figma/geo-map/assets/toolbar/zoom-in.svg +3 -0
  255. package/src/lib/figma/geo-map/assets/toolbar/zoom-out.svg +5 -0
  256. package/src/lib/styles/design-tokens.scss +108 -35
  257. package/src/lib/styles/scrollbar.scss +2 -2
  258. package/src/lib/styles/theme.scss +1 -1
package/ai/catalog.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "package": "@geoit/ui",
3
3
  "import": "@geoit/ui",
4
- "version": "0.0.4",
5
- "generatedAt": "2026-07-27T01:57:41.109Z",
4
+ "version": "0.0.5",
5
+ "generatedAt": "2026-08-24T03:07:52.099Z",
6
6
  "styles": [
7
7
  "@geoit/ui/src/lib/styles/design-tokens.scss",
8
8
  "@geoit/ui/src/lib/styles/theme.scss"
9
9
  ],
10
10
  "tokens": {
11
- "radius": "var(--geo-radius) /* 6px */",
11
+ "radius": "var(--geo-radius) /* 8px — scale: sm 6 / md 10 / lg 12 / xl 14 */",
12
12
  "primary": "var(--geo-color-primary-default)",
13
13
  "docs": "node_modules/@geoit/ui/src/lib/styles/design-tokens.scss"
14
14
  },
@@ -72,7 +72,7 @@
72
72
  "name": "visible",
73
73
  "type": "boolean",
74
74
  "default": "true",
75
- "note": ""
75
+ "note": "Two-way `model()` (supports banana binding)."
76
76
  },
77
77
  {
78
78
  "name": "showIcon",
@@ -84,7 +84,7 @@
84
84
  "outputs": [
85
85
  {
86
86
  "name": "closed",
87
- "type": "EventEmitter<void>",
87
+ "type": "OutputEmitterRef<void>",
88
88
  "note": ""
89
89
  }
90
90
  ],
@@ -152,7 +152,7 @@
152
152
  "outputs": [
153
153
  {
154
154
  "name": "clicked",
155
- "type": "EventEmitter<MouseEvent>",
155
+ "type": "OutputEmitterRef<MouseEvent>",
156
156
  "note": ""
157
157
  }
158
158
  ],
@@ -251,8 +251,8 @@
251
251
  },
252
252
  {
253
253
  "name": "icon",
254
- "type": "string",
255
- "default": "",
254
+ "type": "string | undefined",
255
+ "default": "undefined",
256
256
  "note": ""
257
257
  },
258
258
  {
@@ -313,7 +313,7 @@
313
313
  "outputs": [
314
314
  {
315
315
  "name": "clicked",
316
- "type": "EventEmitter<MouseEvent>",
316
+ "type": "OutputEmitterRef<MouseEvent>",
317
317
  "note": ""
318
318
  }
319
319
  ],
@@ -336,6 +336,96 @@
336
336
  "geo-confirm-modal"
337
337
  ]
338
338
  },
339
+ {
340
+ "name": "GeoChartComponent",
341
+ "selector": "geo-chart",
342
+ "category": "other",
343
+ "summary": "GeoChartComponent",
344
+ "whenToUse": "",
345
+ "doNotUseWhen": "",
346
+ "howTo": "",
347
+ "tips": [],
348
+ "binding": "none",
349
+ "cva": false,
350
+ "path": "projects/geo-ui/src/lib/figma/geo-chart/geo-chart.component.ts",
351
+ "doc": "ai/components/geo-chart.md",
352
+ "inputs": [
353
+ {
354
+ "name": "type",
355
+ "type": "'bar' | 'donut'",
356
+ "default": "'bar'",
357
+ "note": ""
358
+ },
359
+ {
360
+ "name": "title",
361
+ "type": "string",
362
+ "default": "''",
363
+ "note": ""
364
+ },
365
+ {
366
+ "name": "data",
367
+ "type": "GeoChartDatum[]",
368
+ "default": "[]",
369
+ "note": ""
370
+ },
371
+ {
372
+ "name": "height",
373
+ "type": "number",
374
+ "default": "260",
375
+ "note": ""
376
+ },
377
+ {
378
+ "name": "showLegend",
379
+ "type": "boolean",
380
+ "default": "true",
381
+ "note": ""
382
+ },
383
+ {
384
+ "name": "showSort",
385
+ "type": "boolean",
386
+ "default": "false",
387
+ "note": ""
388
+ },
389
+ {
390
+ "name": "sort",
391
+ "type": "'none' | 'asc' | 'desc'",
392
+ "default": "'desc'",
393
+ "note": "Two-way `model()` (supports banana binding)."
394
+ },
395
+ {
396
+ "name": "emptyText",
397
+ "type": "string",
398
+ "default": "'Chưa có dữ liệu thống kê.'",
399
+ "note": ""
400
+ },
401
+ {
402
+ "name": "unit",
403
+ "type": "string",
404
+ "default": "''",
405
+ "note": ""
406
+ }
407
+ ],
408
+ "outputs": [
409
+ {
410
+ "name": "segmentClick",
411
+ "type": "OutputEmitterRef<GeoChartSegmentClick>",
412
+ "note": ""
413
+ },
414
+ {
415
+ "name": "sortChange",
416
+ "type": "OutputEmitterRef<'none' | 'asc' | 'desc'>",
417
+ "note": ""
418
+ }
419
+ ],
420
+ "examples": [
421
+ {
422
+ "title": "Example",
423
+ "lang": "html"
424
+ }
425
+ ],
426
+ "example": "<geo-chart></geo-chart>",
427
+ "related": []
428
+ },
339
429
  {
340
430
  "name": "GeoCheckboxComponent",
341
431
  "selector": "geo-checkbox",
@@ -364,7 +454,7 @@
364
454
  "name": "checked",
365
455
  "type": "boolean",
366
456
  "default": "false",
367
- "note": ""
457
+ "note": "Two-way: `[(checked)]`. — Two-way `model()` (supports banana binding)."
368
458
  },
369
459
  {
370
460
  "name": "disabled",
@@ -379,13 +469,7 @@
379
469
  "note": ""
380
470
  }
381
471
  ],
382
- "outputs": [
383
- {
384
- "name": "checkedChange",
385
- "type": "EventEmitter<boolean>",
386
- "note": ""
387
- }
388
- ],
472
+ "outputs": [],
389
473
  "examples": [
390
474
  {
391
475
  "title": "Basic",
@@ -442,15 +526,15 @@
442
526
  },
443
527
  {
444
528
  "name": "storageKey",
445
- "type": "string",
446
- "default": "",
529
+ "type": "string | undefined",
530
+ "default": "undefined",
447
531
  "note": "Lưu trạng thái ẩn/hiện cột theo session khi người dùng áp dụng"
448
532
  }
449
533
  ],
450
534
  "outputs": [
451
535
  {
452
536
  "name": "apply",
453
- "type": "EventEmitter<GeoColumnPickerApplyPayload>",
537
+ "type": "OutputEmitterRef<GeoColumnPickerApplyPayload>",
454
538
  "note": ""
455
539
  }
456
540
  ],
@@ -494,7 +578,7 @@
494
578
  "name": "visible",
495
579
  "type": "boolean",
496
580
  "default": "false",
497
- "note": ""
581
+ "note": "Two-way `model()` (supports banana binding)."
498
582
  },
499
583
  {
500
584
  "name": "title",
@@ -558,19 +642,14 @@
558
642
  }
559
643
  ],
560
644
  "outputs": [
561
- {
562
- "name": "visibleChange",
563
- "type": "EventEmitter<boolean>",
564
- "note": ""
565
- },
566
645
  {
567
646
  "name": "confirm",
568
- "type": "EventEmitter<void>",
647
+ "type": "OutputEmitterRef<void>",
569
648
  "note": ""
570
649
  },
571
650
  {
572
651
  "name": "cancel",
573
- "type": "EventEmitter<void>",
652
+ "type": "OutputEmitterRef<void>",
574
653
  "note": ""
575
654
  }
576
655
  ],
@@ -593,6 +672,101 @@
593
672
  "geo-toast"
594
673
  ]
595
674
  },
675
+ {
676
+ "name": "GeoDashboardComponent",
677
+ "selector": "geo-dashboard",
678
+ "category": "other",
679
+ "summary": "GeoDashboardComponent",
680
+ "whenToUse": "",
681
+ "doNotUseWhen": "",
682
+ "howTo": "",
683
+ "tips": [],
684
+ "binding": "none",
685
+ "cva": false,
686
+ "path": "projects/geo-ui/src/lib/figma/geo-dashboard/geo-dashboard.component.ts",
687
+ "doc": "ai/components/geo-dashboard.md",
688
+ "inputs": [
689
+ {
690
+ "name": "title",
691
+ "type": "string",
692
+ "default": "'Dashboard thống kê'",
693
+ "note": ""
694
+ },
695
+ {
696
+ "name": "breadcrumb",
697
+ "type": "GeoBreadcrumbItem[]",
698
+ "default": "[ { label: 'Trang chủ', link: '/' }, { label: 'Dashboard' }, ]",
699
+ "note": ""
700
+ },
701
+ {
702
+ "name": "stats",
703
+ "type": "GeoStatCardItem[]",
704
+ "default": "[]",
705
+ "note": ""
706
+ },
707
+ {
708
+ "name": "wardChartTitle",
709
+ "type": "string",
710
+ "default": "'Diện tích quy hoạch theo phường/xã'",
711
+ "note": ""
712
+ },
713
+ {
714
+ "name": "wardData",
715
+ "type": "GeoChartDatum[]",
716
+ "default": "[]",
717
+ "note": ""
718
+ },
719
+ {
720
+ "name": "mismatchChartTitle",
721
+ "type": "string",
722
+ "default": "'Tỷ lệ thửa quy hoạch khác mục đích hiện trạng'",
723
+ "note": ""
724
+ },
725
+ {
726
+ "name": "mismatchData",
727
+ "type": "GeoChartDatum[]",
728
+ "default": "[]",
729
+ "note": ""
730
+ },
731
+ {
732
+ "name": "wardUnit",
733
+ "type": "string",
734
+ "default": "'ha'",
735
+ "note": ""
736
+ },
737
+ {
738
+ "name": "period",
739
+ "type": "GeoDateRangeValue",
740
+ "default": "null",
741
+ "note": "Two-way `model()` (supports banana binding)."
742
+ }
743
+ ],
744
+ "outputs": [
745
+ {
746
+ "name": "periodChange",
747
+ "type": "OutputEmitterRef<GeoDateRangeValue>",
748
+ "note": ""
749
+ },
750
+ {
751
+ "name": "mismatchSegmentClick",
752
+ "type": "OutputEmitterRef<GeoChartSegmentClick>",
753
+ "note": ""
754
+ },
755
+ {
756
+ "name": "wardSegmentClick",
757
+ "type": "OutputEmitterRef<GeoChartSegmentClick>",
758
+ "note": ""
759
+ }
760
+ ],
761
+ "examples": [
762
+ {
763
+ "title": "Example",
764
+ "lang": "html"
765
+ }
766
+ ],
767
+ "example": "<geo-dashboard></geo-dashboard>",
768
+ "related": []
769
+ },
596
770
  {
597
771
  "name": "GeoDatePickerComponent",
598
772
  "selector": "geo-date-picker",
@@ -691,21 +865,21 @@
691
865
  },
692
866
  {
693
867
  "name": "width",
694
- "type": "number | string",
695
- "default": "",
868
+ "type": "number | string | undefined",
869
+ "default": "undefined",
696
870
  "note": ""
697
871
  },
698
872
  {
699
873
  "name": "disabledDate",
700
- "type": "(current: Date)",
701
- "default": "> boolean",
874
+ "type": "((current: Date) => boolean) | undefined",
875
+ "default": "undefined",
702
876
  "note": ""
703
877
  }
704
878
  ],
705
879
  "outputs": [
706
880
  {
707
881
  "name": "valueChange",
708
- "type": "EventEmitter<Date | null>",
882
+ "type": "OutputEmitterRef<Date | null>",
709
883
  "note": ""
710
884
  }
711
885
  ],
@@ -814,14 +988,14 @@
814
988
  },
815
989
  {
816
990
  "name": "width",
817
- "type": "number | string",
818
- "default": "",
991
+ "type": "number | string | undefined",
992
+ "default": "undefined",
819
993
  "note": ""
820
994
  },
821
995
  {
822
996
  "name": "disabledDate",
823
- "type": "(current: Date)",
824
- "default": "> boolean",
997
+ "type": "((current: Date) => boolean) | undefined",
998
+ "default": "undefined",
825
999
  "note": ""
826
1000
  },
827
1001
  {
@@ -834,7 +1008,7 @@
834
1008
  "outputs": [
835
1009
  {
836
1010
  "name": "valueChange",
837
- "type": "EventEmitter<[Date, Date] | null>",
1011
+ "type": "OutputEmitterRef<[Date, Date] | null>",
838
1012
  "note": ""
839
1013
  }
840
1014
  ],
@@ -856,6 +1030,157 @@
856
1030
  "geo-table-filter"
857
1031
  ]
858
1032
  },
1033
+ {
1034
+ "name": "GeoEmptyStateComponent",
1035
+ "selector": "geo-empty-state",
1036
+ "category": "other",
1037
+ "summary": "GeoEmptyStateComponent",
1038
+ "whenToUse": "",
1039
+ "doNotUseWhen": "",
1040
+ "howTo": "",
1041
+ "tips": [],
1042
+ "binding": "none",
1043
+ "cva": false,
1044
+ "path": "projects/geo-ui/src/lib/figma/geo-empty-state/geo-empty-state.component.ts",
1045
+ "doc": "ai/components/geo-empty-state.md",
1046
+ "inputs": [
1047
+ {
1048
+ "name": "title",
1049
+ "type": "string",
1050
+ "default": "'Không có dữ liệu'",
1051
+ "note": ""
1052
+ },
1053
+ {
1054
+ "name": "description",
1055
+ "type": "string",
1056
+ "default": "''",
1057
+ "note": ""
1058
+ },
1059
+ {
1060
+ "name": "icon",
1061
+ "type": "string",
1062
+ "default": "'inbox'",
1063
+ "note": ""
1064
+ },
1065
+ {
1066
+ "name": "actionLabel",
1067
+ "type": "string",
1068
+ "default": "''",
1069
+ "note": ""
1070
+ }
1071
+ ],
1072
+ "outputs": [
1073
+ {
1074
+ "name": "actionClick",
1075
+ "type": "OutputEmitterRef<void>",
1076
+ "note": ""
1077
+ }
1078
+ ],
1079
+ "examples": [
1080
+ {
1081
+ "title": "Example",
1082
+ "lang": "html"
1083
+ }
1084
+ ],
1085
+ "example": "<geo-empty-state></geo-empty-state>",
1086
+ "related": []
1087
+ },
1088
+ {
1089
+ "name": "GeoFeedbackFormComponent",
1090
+ "selector": "geo-feedback-form",
1091
+ "category": "other",
1092
+ "summary": "GeoFeedbackFormComponent",
1093
+ "whenToUse": "",
1094
+ "doNotUseWhen": "",
1095
+ "howTo": "",
1096
+ "tips": [],
1097
+ "binding": "none",
1098
+ "cva": false,
1099
+ "path": "projects/geo-ui/src/lib/figma/geo-feedback-form/geo-feedback-form.component.ts",
1100
+ "doc": "ai/components/geo-feedback-form.md",
1101
+ "inputs": [
1102
+ {
1103
+ "name": "title",
1104
+ "type": "string",
1105
+ "default": "'Gửi phản ánh, kiến nghị'",
1106
+ "note": ""
1107
+ },
1108
+ {
1109
+ "name": "description",
1110
+ "type": "string",
1111
+ "default": "'Nội dung sẽ được chuyển tới cán bộ xử lý. Vui lòng mô tả rõ vấn đề và vị trí (nếu có).'",
1112
+ "note": "Mô tả ngắn dưới tiêu đề — giúp người dân hiểu quy trình xử lý."
1113
+ },
1114
+ {
1115
+ "name": "maxLength",
1116
+ "type": "number",
1117
+ "default": "1000",
1118
+ "note": ""
1119
+ },
1120
+ {
1121
+ "name": "loading",
1122
+ "type": "boolean",
1123
+ "default": "false",
1124
+ "note": ""
1125
+ },
1126
+ {
1127
+ "name": "showCancel",
1128
+ "type": "boolean",
1129
+ "default": "true",
1130
+ "note": "Ẩn nút Hủy khi form dùng trên trang riêng (không phải dialog)."
1131
+ },
1132
+ {
1133
+ "name": "fill",
1134
+ "type": "boolean",
1135
+ "default": "false",
1136
+ "note": "Form chiếm hết chiều rộng/cao vùng chứa (trang full content)."
1137
+ },
1138
+ {
1139
+ "name": "submitLabel",
1140
+ "type": "string",
1141
+ "default": "'Gửi phản ánh'",
1142
+ "note": ""
1143
+ },
1144
+ {
1145
+ "name": "cancelLabel",
1146
+ "type": "string",
1147
+ "default": "'Hủy'",
1148
+ "note": ""
1149
+ },
1150
+ {
1151
+ "name": "senderName",
1152
+ "type": "string",
1153
+ "default": "''",
1154
+ "note": "Two-way `model()` (supports banana binding)."
1155
+ },
1156
+ {
1157
+ "name": "content",
1158
+ "type": "string",
1159
+ "default": "''",
1160
+ "note": "Two-way `model()` (supports banana binding)."
1161
+ }
1162
+ ],
1163
+ "outputs": [
1164
+ {
1165
+ "name": "submittedFeedback",
1166
+ "type": "OutputEmitterRef<GeoFeedbackPayload>",
1167
+ "note": ""
1168
+ },
1169
+ {
1170
+ "name": "cancelled",
1171
+ "type": "OutputEmitterRef<void>",
1172
+ "note": ""
1173
+ }
1174
+ ],
1175
+ "examples": [
1176
+ {
1177
+ "title": "Example",
1178
+ "lang": "html"
1179
+ }
1180
+ ],
1181
+ "example": "<geo-feedback-form></geo-feedback-form>",
1182
+ "related": []
1183
+ },
859
1184
  {
860
1185
  "name": "GeoFilePickerComponent",
861
1186
  "selector": "geo-file-picker",
@@ -936,8 +1261,8 @@
936
1261
  },
937
1262
  {
938
1263
  "name": "width",
939
- "type": "number | string",
940
- "default": "",
1264
+ "type": "number | string | undefined",
1265
+ "default": "undefined",
941
1266
  "note": ""
942
1267
  },
943
1268
  {
@@ -950,7 +1275,7 @@
950
1275
  "outputs": [
951
1276
  {
952
1277
  "name": "fileChange",
953
- "type": "EventEmitter<File | File[] | null>",
1278
+ "type": "OutputEmitterRef<File | File[] | null>",
954
1279
  "note": ""
955
1280
  }
956
1281
  ],
@@ -974,28 +1299,100 @@
974
1299
  ]
975
1300
  },
976
1301
  {
977
- "name": "GeoFormModalComponent",
978
- "selector": "geo-form-modal",
979
- "category": "overlay",
980
- "summary": "Form modal: fixed header/footer, scrollable body via ng-content.",
981
- "whenToUse": "Create/edit dialogs; compose geo-stepper inside body for multi-step.",
982
- "doNotUseWhen": "Full-page wizards — use geo-step-form-layout.",
983
- "howTo": "Modal form: header/footer cố định, body scroll qua ng-content. [open] + (openChange); (ok)/(cancel). Ghép geo-stepper trong body cho multi-step dialog.",
984
- "tips": [
985
- "Wizard full-page → geo-step-form-layout.",
986
- "okIcon/cancelIcon + placement cho nút Tiếp theo / Quay lại.",
987
- "bodyMaxHeight mặc định 60vh; readonly ẩn nút OK."
988
- ],
1302
+ "name": "GeoForgotPasswordComponent",
1303
+ "selector": "geo-forgot-password",
1304
+ "category": "other",
1305
+ "summary": "GeoForgotPasswordComponent",
1306
+ "whenToUse": "",
1307
+ "doNotUseWhen": "",
1308
+ "howTo": "",
1309
+ "tips": [],
989
1310
  "binding": "none",
990
1311
  "cva": false,
991
- "path": "projects/geo-ui/src/lib/figma/geo-form-modal/geo-form-modal.component.ts",
992
- "doc": "ai/components/geo-form-modal.md",
1312
+ "path": "projects/geo-ui/src/lib/figma/geo-forgot-password/geo-forgot-password.component.ts",
1313
+ "doc": "ai/components/geo-forgot-password.md",
993
1314
  "inputs": [
994
1315
  {
995
- "name": "open",
996
- "type": "boolean",
1316
+ "name": "title",
1317
+ "type": "string",
1318
+ "default": "'Quên mật khẩu'",
1319
+ "note": ""
1320
+ },
1321
+ {
1322
+ "name": "subtitle",
1323
+ "type": "string",
1324
+ "default": "'Nhập email đã đăng ký để nhận mật khẩu mới.'",
1325
+ "note": ""
1326
+ },
1327
+ {
1328
+ "name": "loading",
1329
+ "type": "boolean",
1330
+ "default": "false",
1331
+ "note": ""
1332
+ },
1333
+ {
1334
+ "name": "errorMessage",
1335
+ "type": "string",
1336
+ "default": "''",
1337
+ "note": ""
1338
+ },
1339
+ {
1340
+ "name": "successMessage",
1341
+ "type": "string",
1342
+ "default": "''",
1343
+ "note": ""
1344
+ },
1345
+ {
1346
+ "name": "email",
1347
+ "type": "string",
1348
+ "default": "''",
1349
+ "note": "Two-way `model()` (supports banana binding)."
1350
+ }
1351
+ ],
1352
+ "outputs": [
1353
+ {
1354
+ "name": "submitEmail",
1355
+ "type": "OutputEmitterRef<string>",
1356
+ "note": ""
1357
+ },
1358
+ {
1359
+ "name": "backToLogin",
1360
+ "type": "OutputEmitterRef<void>",
1361
+ "note": ""
1362
+ }
1363
+ ],
1364
+ "examples": [
1365
+ {
1366
+ "title": "Example",
1367
+ "lang": "html"
1368
+ }
1369
+ ],
1370
+ "example": "<geo-forgot-password></geo-forgot-password>",
1371
+ "related": []
1372
+ },
1373
+ {
1374
+ "name": "GeoFormModalComponent",
1375
+ "selector": "geo-form-modal",
1376
+ "category": "overlay",
1377
+ "summary": "Form modal: fixed header/footer, scrollable body via ng-content.",
1378
+ "whenToUse": "Create/edit dialogs; compose geo-stepper inside body for multi-step.",
1379
+ "doNotUseWhen": "Full-page wizards — use geo-step-form-layout.",
1380
+ "howTo": "Modal form: header/footer cố định, body scroll qua ng-content. [open] + (openChange); (ok)/(cancel). Ghép geo-stepper trong body cho multi-step dialog.",
1381
+ "tips": [
1382
+ "Wizard full-page → geo-step-form-layout.",
1383
+ "okIcon/cancelIcon + placement cho nút Tiếp theo / Quay lại.",
1384
+ "bodyMaxHeight mặc định 60vh; readonly ẩn nút OK."
1385
+ ],
1386
+ "binding": "none",
1387
+ "cva": false,
1388
+ "path": "projects/geo-ui/src/lib/figma/geo-form-modal/geo-form-modal.component.ts",
1389
+ "doc": "ai/components/geo-form-modal.md",
1390
+ "inputs": [
1391
+ {
1392
+ "name": "open",
1393
+ "type": "boolean",
997
1394
  "default": "false",
998
- "note": "Tương đương `open` (antd) / `nzVisible` (ng-zorro)."
1395
+ "note": "Tương đương `open` (antd) / `nzVisible` (ng-zorro). — Two-way `model()` (supports banana binding)."
999
1396
  },
1000
1397
  {
1001
1398
  "name": "title",
@@ -1023,8 +1420,8 @@
1023
1420
  },
1024
1421
  {
1025
1422
  "name": "cancelIcon",
1026
- "type": "string",
1027
- "default": "",
1423
+ "type": "string | undefined",
1424
+ "default": "undefined",
1028
1425
  "note": "Icon nút cancel (vd. `left` cho Quay lại)."
1029
1426
  },
1030
1427
  {
@@ -1035,8 +1432,8 @@
1035
1432
  },
1036
1433
  {
1037
1434
  "name": "okIcon",
1038
- "type": "string",
1039
- "default": "",
1435
+ "type": "string | undefined",
1436
+ "default": "undefined",
1040
1437
  "note": "Icon nút OK (vd. `right` cho Tiếp theo)."
1041
1438
  },
1042
1439
  {
@@ -1137,34 +1534,29 @@
1137
1534
  }
1138
1535
  ],
1139
1536
  "outputs": [
1140
- {
1141
- "name": "openChange",
1142
- "type": "EventEmitter<boolean>",
1143
- "note": ""
1144
- },
1145
1537
  {
1146
1538
  "name": "ok",
1147
- "type": "EventEmitter<void>",
1539
+ "type": "OutputEmitterRef<void>",
1148
1540
  "note": ""
1149
1541
  },
1150
1542
  {
1151
1543
  "name": "secondaryOk",
1152
- "type": "EventEmitter<void>",
1544
+ "type": "OutputEmitterRef<void>",
1153
1545
  "note": ""
1154
1546
  },
1155
1547
  {
1156
1548
  "name": "cancel",
1157
- "type": "EventEmitter<void>",
1549
+ "type": "OutputEmitterRef<void>",
1158
1550
  "note": ""
1159
1551
  },
1160
1552
  {
1161
1553
  "name": "afterOpen",
1162
- "type": "EventEmitter<void>",
1554
+ "type": "OutputEmitterRef<void>",
1163
1555
  "note": ""
1164
1556
  },
1165
1557
  {
1166
1558
  "name": "afterClose",
1167
- "type": "EventEmitter<void>",
1559
+ "type": "OutputEmitterRef<void>",
1168
1560
  "note": ""
1169
1561
  }
1170
1562
  ],
@@ -1209,7 +1601,7 @@
1209
1601
  "inputs": [
1210
1602
  {
1211
1603
  "name": "type",
1212
- "type": "",
1604
+ "type": "string",
1213
1605
  "default": "",
1214
1606
  "note": "Tên icon Ant Design (vd. `close`, `search`, `appstore`)."
1215
1607
  },
@@ -1233,8 +1625,8 @@
1233
1625
  },
1234
1626
  {
1235
1627
  "name": "color",
1236
- "type": "string",
1237
- "default": "",
1628
+ "type": "string | undefined",
1629
+ "default": "undefined",
1238
1630
  "note": "CSS color — ưu tiên design token, vd. `var(--geo-color-primary-default)`"
1239
1631
  }
1240
1632
  ],
@@ -1312,84 +1704,2192 @@
1312
1704
  "note": ""
1313
1705
  },
1314
1706
  {
1315
- "name": "error",
1707
+ "name": "error",
1708
+ "type": "boolean",
1709
+ "default": "false",
1710
+ "note": ""
1711
+ },
1712
+ {
1713
+ "name": "errorMessage",
1714
+ "type": "string",
1715
+ "default": "''",
1716
+ "note": ""
1717
+ },
1718
+ {
1719
+ "name": "maxlength",
1720
+ "type": "number | undefined",
1721
+ "default": "undefined",
1722
+ "note": ""
1723
+ },
1724
+ {
1725
+ "name": "prefixIcon",
1726
+ "type": "string | undefined",
1727
+ "default": "undefined",
1728
+ "note": ""
1729
+ },
1730
+ {
1731
+ "name": "suffixIcon",
1732
+ "type": "string | undefined",
1733
+ "default": "undefined",
1734
+ "note": ""
1735
+ },
1736
+ {
1737
+ "name": "allowClear",
1738
+ "type": "boolean",
1739
+ "default": "false",
1740
+ "note": ""
1741
+ },
1742
+ {
1743
+ "name": "block",
1744
+ "type": "boolean",
1745
+ "default": "false",
1746
+ "note": ""
1747
+ },
1748
+ {
1749
+ "name": "width",
1750
+ "type": "number | string | undefined",
1751
+ "default": "undefined",
1752
+ "note": ""
1753
+ }
1754
+ ],
1755
+ "outputs": [
1756
+ {
1757
+ "name": "valueChange",
1758
+ "type": "OutputEmitterRef<string>",
1759
+ "note": ""
1760
+ },
1761
+ {
1762
+ "name": "enterPressed",
1763
+ "type": "OutputEmitterRef<void>",
1764
+ "note": ""
1765
+ }
1766
+ ],
1767
+ "examples": [
1768
+ {
1769
+ "title": "Basic",
1770
+ "lang": "html",
1771
+ "code": "<geo-input label=\"Họ tên\" [required]=\"true\" [block]=\"true\" [(ngModel)]=\"name\"></geo-input>"
1772
+ },
1773
+ {
1774
+ "title": "Full options",
1775
+ "lang": "html",
1776
+ "code": "<geo-input\n label=\"Mã hồ sơ\"\n placeholder=\"Nhập mã hồ sơ\"\n type=\"text\"\n prefixIcon=\"search\"\n [allowClear]=\"true\"\n [required]=\"true\"\n [block]=\"true\"\n [maxlength]=\"50\"\n [error]=\"codeError\"\n errorMessage=\"Mã không được để trống\"\n [(ngModel)]=\"code\"\n (enterPressed)=\"onSearch()\"\n (valueChange)=\"onCode($event)\"\n></geo-input>"
1777
+ }
1778
+ ],
1779
+ "example": "<geo-input label=\"Họ tên\" [required]=\"true\" [block]=\"true\" [(ngModel)]=\"name\"></geo-input>",
1780
+ "related": [
1781
+ "geo-textarea",
1782
+ "geo-select",
1783
+ "geo-form-modal"
1784
+ ]
1785
+ },
1786
+ {
1787
+ "name": "GeoLayoutComponent",
1788
+ "selector": "geo-layout",
1789
+ "category": "layout",
1790
+ "summary": "App shell composing sidebar + header + content + footer.",
1791
+ "whenToUse": "Host application chrome mirroring layout/feature MainLayout.",
1792
+ "doNotUseWhen": "In-page wizards — use geo-step-form-layout; dialogs — use geo-form-modal.",
1793
+ "howTo": "",
1794
+ "tips": [],
1795
+ "binding": "none",
1796
+ "cva": false,
1797
+ "path": "projects/geo-ui/src/lib/figma/geo-layout/geo-layout.component.ts",
1798
+ "doc": "ai/components/geo-layout.md",
1799
+ "inputs": [
1800
+ {
1801
+ "name": "menuItems",
1802
+ "type": "GeoLayoutMenuItem[]",
1803
+ "default": "[]",
1804
+ "note": ""
1805
+ },
1806
+ {
1807
+ "name": "brandTitle",
1808
+ "type": "string",
1809
+ "default": "'iLIS'",
1810
+ "note": ""
1811
+ },
1812
+ {
1813
+ "name": "logoSrc",
1814
+ "type": "string",
1815
+ "default": "''",
1816
+ "note": ""
1817
+ },
1818
+ {
1819
+ "name": "logoAlt",
1820
+ "type": "string",
1821
+ "default": "'Logo'",
1822
+ "note": ""
1823
+ },
1824
+ {
1825
+ "name": "sidebarBackgroundSrc",
1826
+ "type": "string",
1827
+ "default": "''",
1828
+ "note": ""
1829
+ },
1830
+ {
1831
+ "name": "breadcrumbs",
1832
+ "type": "GeoBreadcrumbItem[]",
1833
+ "default": "[]",
1834
+ "note": ""
1835
+ },
1836
+ {
1837
+ "name": "fallbackBreadcrumb",
1838
+ "type": "string",
1839
+ "default": "'Hệ thống thông tin đất đai - VNPT iLIS'",
1840
+ "note": ""
1841
+ },
1842
+ {
1843
+ "name": "expanded",
1844
+ "type": "boolean",
1845
+ "default": "true",
1846
+ "note": "Two-way `model()` (supports banana binding)."
1847
+ },
1848
+ {
1849
+ "name": "isMobile",
1850
+ "type": "boolean",
1851
+ "default": "false",
1852
+ "note": ""
1853
+ },
1854
+ {
1855
+ "name": "mobileMenuOpen",
1856
+ "type": "boolean",
1857
+ "default": "false",
1858
+ "note": "Two-way `model()` (supports banana binding)."
1859
+ },
1860
+ {
1861
+ "name": "selectedKey",
1862
+ "type": "string | null",
1863
+ "default": "null",
1864
+ "note": "Two-way `model()` (supports banana binding)."
1865
+ },
1866
+ {
1867
+ "name": "siderWidth",
1868
+ "type": "number | string",
1869
+ "default": "280",
1870
+ "note": ""
1871
+ },
1872
+ {
1873
+ "name": "siderCollapsedWidth",
1874
+ "type": "number | string",
1875
+ "default": "80",
1876
+ "note": ""
1877
+ },
1878
+ {
1879
+ "name": "showDefaultActions",
1880
+ "type": "boolean",
1881
+ "default": "true",
1882
+ "note": ""
1883
+ },
1884
+ {
1885
+ "name": "showFooter",
1886
+ "type": "boolean",
1887
+ "default": "true",
1888
+ "note": ""
1889
+ },
1890
+ {
1891
+ "name": "footerText",
1892
+ "type": "string",
1893
+ "default": "'© VNPT | Hệ thống thông tin đất đai iLIS'",
1894
+ "note": ""
1895
+ },
1896
+ {
1897
+ "name": "user",
1898
+ "type": "GeoLayoutUserInfo",
1899
+ "default": "GEO_LAYOUT_DEFAULT_USER",
1900
+ "note": ""
1901
+ },
1902
+ {
1903
+ "name": "notifications",
1904
+ "type": "GeoLayoutNotificationItem[]",
1905
+ "default": "GEO_LAYOUT_DEFAULT_NOTIFICATIONS",
1906
+ "note": ""
1907
+ },
1908
+ {
1909
+ "name": "subsystems",
1910
+ "type": "GeoLayoutSubsystemItem[]",
1911
+ "default": "GEO_LAYOUT_DEFAULT_SUBSYSTEMS",
1912
+ "note": ""
1913
+ },
1914
+ {
1915
+ "name": "userMenuItems",
1916
+ "type": "GeoLayoutUserMenuItem[]",
1917
+ "default": "GEO_LAYOUT_DEFAULT_USER_MENU",
1918
+ "note": ""
1919
+ }
1920
+ ],
1921
+ "outputs": [
1922
+ {
1923
+ "name": "menuSelect",
1924
+ "type": "OutputEmitterRef<GeoLayoutMenuItem>",
1925
+ "note": ""
1926
+ },
1927
+ {
1928
+ "name": "sidebarToggle",
1929
+ "type": "OutputEmitterRef<void>",
1930
+ "note": ""
1931
+ },
1932
+ {
1933
+ "name": "notificationClick",
1934
+ "type": "OutputEmitterRef<GeoLayoutNotificationItem>",
1935
+ "note": ""
1936
+ },
1937
+ {
1938
+ "name": "subsystemClick",
1939
+ "type": "OutputEmitterRef<GeoLayoutSubsystemItem>",
1940
+ "note": ""
1941
+ },
1942
+ {
1943
+ "name": "userMenuClick",
1944
+ "type": "OutputEmitterRef<GeoLayoutUserMenuItem>",
1945
+ "note": ""
1946
+ },
1947
+ {
1948
+ "name": "logout",
1949
+ "type": "OutputEmitterRef<void>",
1950
+ "note": ""
1951
+ }
1952
+ ],
1953
+ "examples": [
1954
+ {
1955
+ "title": "Example",
1956
+ "lang": "html",
1957
+ "code": "<geo-layout\n [menuItems]=\"menu\"\n [(expanded)]=\"expanded\"\n [breadcrumbs]=\"crumbs\"\n [(selectedKey)]=\"active\"\n [user]=\"{ name: 'vnpt', email: 'vnpt@vnpt.vn' }\"\n (menuSelect)=\"onNav($event)\"\n (logout)=\"onLogout()\"\n>\n <router-outlet />\n</geo-layout>"
1958
+ }
1959
+ ],
1960
+ "example": "<geo-layout\n [menuItems]=\"menu\"\n [(expanded)]=\"expanded\"\n [breadcrumbs]=\"crumbs\"\n [(selectedKey)]=\"active\"\n [user]=\"{ name: 'vnpt', email: 'vnpt@vnpt.vn' }\"\n (menuSelect)=\"onNav($event)\"\n (logout)=\"onLogout()\"\n>\n <router-outlet />\n</geo-layout>",
1961
+ "related": []
1962
+ },
1963
+ {
1964
+ "name": "GeoLayoutFooterComponent",
1965
+ "selector": "geo-layout-footer",
1966
+ "category": "layout",
1967
+ "summary": "Minimal layout footer with copyright text + content slot.",
1968
+ "whenToUse": "Bottom chrome inside geo-layout or custom shells.",
1969
+ "doNotUseWhen": "Marketing page footers with heavy links/nav.",
1970
+ "howTo": "",
1971
+ "tips": [],
1972
+ "binding": "none",
1973
+ "cva": false,
1974
+ "path": "projects/geo-ui/src/lib/figma/geo-layout/footer/geo-layout-footer.component.ts",
1975
+ "doc": "ai/components/geo-layout-footer.md",
1976
+ "inputs": [
1977
+ {
1978
+ "name": "text",
1979
+ "type": "string",
1980
+ "default": "'© VNPT | Hệ thống thông tin đất đai iLIS'",
1981
+ "note": "Copyright / status text. Empty = use default."
1982
+ }
1983
+ ],
1984
+ "outputs": [],
1985
+ "examples": [
1986
+ {
1987
+ "title": "Example",
1988
+ "lang": "html",
1989
+ "code": "<geo-layout-footer text=\"© VNPT | iLIS\"></geo-layout-footer>"
1990
+ }
1991
+ ],
1992
+ "example": "<geo-layout-footer text=\"© VNPT | iLIS\"></geo-layout-footer>",
1993
+ "related": []
1994
+ },
1995
+ {
1996
+ "name": "GeoLayoutHeaderComponent",
1997
+ "selector": "geo-layout-header",
1998
+ "category": "layout",
1999
+ "summary": "Soft top bar: toggle + breadcrumb + user/notification actions.",
2000
+ "whenToUse": "Standalone top bar, or inside geo-layout.",
2001
+ "doNotUseWhen": "Full app chrome — use geo-layout.",
2002
+ "howTo": "",
2003
+ "tips": [],
2004
+ "binding": "none",
2005
+ "cva": false,
2006
+ "path": "projects/geo-ui/src/lib/figma/geo-layout/header/geo-layout-header.component.ts",
2007
+ "doc": "ai/components/geo-layout-header.md",
2008
+ "inputs": [
2009
+ {
2010
+ "name": "breadcrumbs",
2011
+ "type": "GeoBreadcrumbItem[]",
2012
+ "default": "[]",
2013
+ "note": ""
2014
+ },
2015
+ {
2016
+ "name": "fallbackBreadcrumb",
2017
+ "type": "string",
2018
+ "default": "'Hệ thống thông tin đất đai - VNPT iLIS'",
2019
+ "note": ""
2020
+ },
2021
+ {
2022
+ "name": "expanded",
2023
+ "type": "boolean",
2024
+ "default": "true",
2025
+ "note": ""
2026
+ },
2027
+ {
2028
+ "name": "isMobile",
2029
+ "type": "boolean",
2030
+ "default": "false",
2031
+ "note": ""
2032
+ },
2033
+ {
2034
+ "name": "mobileMenuOpen",
2035
+ "type": "boolean",
2036
+ "default": "false",
2037
+ "note": ""
2038
+ },
2039
+ {
2040
+ "name": "showDefaultActions",
2041
+ "type": "boolean",
2042
+ "default": "true",
2043
+ "note": ""
2044
+ },
2045
+ {
2046
+ "name": "user",
2047
+ "type": "GeoLayoutUserInfo",
2048
+ "default": "GEO_LAYOUT_DEFAULT_USER",
2049
+ "note": ""
2050
+ },
2051
+ {
2052
+ "name": "notifications",
2053
+ "type": "GeoLayoutNotificationItem[]",
2054
+ "default": "GEO_LAYOUT_DEFAULT_NOTIFICATIONS",
2055
+ "note": ""
2056
+ },
2057
+ {
2058
+ "name": "subsystems",
2059
+ "type": "GeoLayoutSubsystemItem[]",
2060
+ "default": "GEO_LAYOUT_DEFAULT_SUBSYSTEMS",
2061
+ "note": ""
2062
+ },
2063
+ {
2064
+ "name": "userMenuItems",
2065
+ "type": "GeoLayoutUserMenuItem[]",
2066
+ "default": "GEO_LAYOUT_DEFAULT_USER_MENU",
2067
+ "note": ""
2068
+ }
2069
+ ],
2070
+ "outputs": [
2071
+ {
2072
+ "name": "sidebarToggle",
2073
+ "type": "OutputEmitterRef<void>",
2074
+ "note": ""
2075
+ },
2076
+ {
2077
+ "name": "notificationClick",
2078
+ "type": "OutputEmitterRef<GeoLayoutNotificationItem>",
2079
+ "note": ""
2080
+ },
2081
+ {
2082
+ "name": "subsystemClick",
2083
+ "type": "OutputEmitterRef<GeoLayoutSubsystemItem>",
2084
+ "note": ""
2085
+ },
2086
+ {
2087
+ "name": "userMenuClick",
2088
+ "type": "OutputEmitterRef<GeoLayoutUserMenuItem>",
2089
+ "note": ""
2090
+ },
2091
+ {
2092
+ "name": "logout",
2093
+ "type": "OutputEmitterRef<void>",
2094
+ "note": ""
2095
+ }
2096
+ ],
2097
+ "examples": [
2098
+ {
2099
+ "title": "Example",
2100
+ "lang": "html",
2101
+ "code": "<geo-layout-header\n [breadcrumbs]=\"crumbs\"\n [user]=\"{ name: 'vnpt', email: 'vnpt@vnpt.vn' }\"\n (sidebarToggle)=\"toggle()\"\n></geo-layout-header>"
2102
+ }
2103
+ ],
2104
+ "example": "<geo-layout-header\n [breadcrumbs]=\"crumbs\"\n [user]=\"{ name: 'vnpt', email: 'vnpt@vnpt.vn' }\"\n (sidebarToggle)=\"toggle()\"\n></geo-layout-header>",
2105
+ "related": []
2106
+ },
2107
+ {
2108
+ "name": "GeoLayoutHeaderActionsComponent",
2109
+ "selector": "geo-layout-header-actions",
2110
+ "category": "layout",
2111
+ "summary": "Header actions: notification/subsystem icons + user chip with popovers.",
2112
+ "whenToUse": "Standalone header toolbar, or default actions inside geo-layout-header.",
2113
+ "doNotUseWhen": "Full app chrome — prefer wrapping with geo-layout.",
2114
+ "howTo": "",
2115
+ "tips": [],
2116
+ "binding": "none",
2117
+ "cva": false,
2118
+ "path": "projects/geo-ui/src/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.ts",
2119
+ "doc": "ai/components/geo-layout-header-actions.md",
2120
+ "inputs": [
2121
+ {
2122
+ "name": "user",
2123
+ "type": "GeoLayoutUserInfo",
2124
+ "default": "GEO_LAYOUT_DEFAULT_USER",
2125
+ "note": ""
2126
+ },
2127
+ {
2128
+ "name": "notifications",
2129
+ "type": "GeoLayoutNotificationItem[]",
2130
+ "default": "GEO_LAYOUT_DEFAULT_NOTIFICATIONS",
2131
+ "note": ""
2132
+ },
2133
+ {
2134
+ "name": "subsystems",
2135
+ "type": "GeoLayoutSubsystemItem[]",
2136
+ "default": "GEO_LAYOUT_DEFAULT_SUBSYSTEMS",
2137
+ "note": ""
2138
+ },
2139
+ {
2140
+ "name": "userMenuItems",
2141
+ "type": "GeoLayoutUserMenuItem[]",
2142
+ "default": "GEO_LAYOUT_DEFAULT_USER_MENU",
2143
+ "note": ""
2144
+ },
2145
+ {
2146
+ "name": "compact",
2147
+ "type": "boolean",
2148
+ "default": "false",
2149
+ "note": "Ẩn tên/email trên chip (mobile)."
2150
+ }
2151
+ ],
2152
+ "outputs": [
2153
+ {
2154
+ "name": "notificationClick",
2155
+ "type": "OutputEmitterRef<GeoLayoutNotificationItem>",
2156
+ "note": ""
2157
+ },
2158
+ {
2159
+ "name": "subsystemClick",
2160
+ "type": "OutputEmitterRef<GeoLayoutSubsystemItem>",
2161
+ "note": ""
2162
+ },
2163
+ {
2164
+ "name": "userMenuClick",
2165
+ "type": "OutputEmitterRef<GeoLayoutUserMenuItem>",
2166
+ "note": ""
2167
+ },
2168
+ {
2169
+ "name": "logout",
2170
+ "type": "OutputEmitterRef<void>",
2171
+ "note": ""
2172
+ }
2173
+ ],
2174
+ "examples": [
2175
+ {
2176
+ "title": "Example",
2177
+ "lang": "html",
2178
+ "code": "<geo-layout-header-actions\n [user]=\"{ name: 'vnpt', email: 'vnpt@vnpt.vn' }\"\n (logout)=\"onLogout()\"\n></geo-layout-header-actions>"
2179
+ }
2180
+ ],
2181
+ "example": "<geo-layout-header-actions\n [user]=\"{ name: 'vnpt', email: 'vnpt@vnpt.vn' }\"\n (logout)=\"onLogout()\"\n></geo-layout-header-actions>",
2182
+ "related": []
2183
+ },
2184
+ {
2185
+ "name": "GeoLayoutSidebarComponent",
2186
+ "selector": "geo-layout-sidebar",
2187
+ "category": "layout",
2188
+ "summary": "White sidebar: brand + recursive menu (collapse / mobile drawer).",
2189
+ "whenToUse": "Standalone nav rail, or inside geo-layout.",
2190
+ "doNotUseWhen": "Full app chrome — use geo-layout.",
2191
+ "howTo": "",
2192
+ "tips": [],
2193
+ "binding": "none",
2194
+ "cva": false,
2195
+ "path": "projects/geo-ui/src/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.ts",
2196
+ "doc": "ai/components/geo-layout-sidebar.md",
2197
+ "inputs": [
2198
+ {
2199
+ "name": "menuItems",
2200
+ "type": "GeoLayoutMenuItem[]",
2201
+ "default": "[]",
2202
+ "note": ""
2203
+ },
2204
+ {
2205
+ "name": "brandTitle",
2206
+ "type": "string",
2207
+ "default": "'iLIS'",
2208
+ "note": ""
2209
+ },
2210
+ {
2211
+ "name": "logoSrc",
2212
+ "type": "string",
2213
+ "default": "''",
2214
+ "note": ""
2215
+ },
2216
+ {
2217
+ "name": "logoAlt",
2218
+ "type": "string",
2219
+ "default": "'Logo'",
2220
+ "note": ""
2221
+ },
2222
+ {
2223
+ "name": "sidebarBackgroundSrc",
2224
+ "type": "string",
2225
+ "default": "''",
2226
+ "note": ""
2227
+ },
2228
+ {
2229
+ "name": "selectedKey",
2230
+ "type": "string | null",
2231
+ "default": "null",
2232
+ "note": "Two-way `model()` (supports banana binding)."
2233
+ },
2234
+ {
2235
+ "name": "collapsed",
2236
+ "type": "boolean",
2237
+ "default": "false",
2238
+ "note": ""
2239
+ },
2240
+ {
2241
+ "name": "isMobile",
2242
+ "type": "boolean",
2243
+ "default": "false",
2244
+ "note": ""
2245
+ },
2246
+ {
2247
+ "name": "mobileOpen",
2248
+ "type": "boolean",
2249
+ "default": "false",
2250
+ "note": ""
2251
+ },
2252
+ {
2253
+ "name": "width",
2254
+ "type": "GeoLayoutSiderWidth",
2255
+ "default": "280",
2256
+ "note": ""
2257
+ },
2258
+ {
2259
+ "name": "collapsedWidth",
2260
+ "type": "GeoLayoutSiderWidth",
2261
+ "default": "80",
2262
+ "note": ""
2263
+ }
2264
+ ],
2265
+ "outputs": [
2266
+ {
2267
+ "name": "menuSelect",
2268
+ "type": "OutputEmitterRef<GeoLayoutMenuItem>",
2269
+ "note": ""
2270
+ }
2271
+ ],
2272
+ "examples": [
2273
+ {
2274
+ "title": "Example",
2275
+ "lang": "html",
2276
+ "code": "<geo-layout-sidebar\n [menuItems]=\"menu\"\n [(selectedKey)]=\"active\"\n [collapsed]=\"false\"\n></geo-layout-sidebar>"
2277
+ }
2278
+ ],
2279
+ "example": "<geo-layout-sidebar\n [menuItems]=\"menu\"\n [(selectedKey)]=\"active\"\n [collapsed]=\"false\"\n></geo-layout-sidebar>",
2280
+ "related": []
2281
+ },
2282
+ {
2283
+ "name": "GeoListPageComponent",
2284
+ "selector": "geo-list-page",
2285
+ "category": "other",
2286
+ "summary": "GeoListPageComponent",
2287
+ "whenToUse": "",
2288
+ "doNotUseWhen": "",
2289
+ "howTo": "",
2290
+ "tips": [],
2291
+ "binding": "none",
2292
+ "cva": false,
2293
+ "path": "projects/geo-ui/src/lib/figma/geo-list-page/geo-list-page.component.ts",
2294
+ "doc": "ai/components/geo-list-page.md",
2295
+ "inputs": [
2296
+ {
2297
+ "name": "title",
2298
+ "type": "string",
2299
+ "default": "''",
2300
+ "note": ""
2301
+ },
2302
+ {
2303
+ "name": "breadcrumb",
2304
+ "type": "GeoBreadcrumbItem[]",
2305
+ "default": "[]",
2306
+ "note": ""
2307
+ },
2308
+ {
2309
+ "name": "uppercase",
2310
+ "type": "boolean",
2311
+ "default": "true",
2312
+ "note": ""
2313
+ }
2314
+ ],
2315
+ "outputs": [],
2316
+ "examples": [
2317
+ {
2318
+ "title": "Example",
2319
+ "lang": "html"
2320
+ }
2321
+ ],
2322
+ "example": "<geo-list-page></geo-list-page>",
2323
+ "related": []
2324
+ },
2325
+ {
2326
+ "name": "GeoLoginComponent",
2327
+ "selector": "geo-login",
2328
+ "category": "other",
2329
+ "summary": "GeoLoginComponent",
2330
+ "whenToUse": "",
2331
+ "doNotUseWhen": "",
2332
+ "howTo": "",
2333
+ "tips": [],
2334
+ "binding": "none",
2335
+ "cva": false,
2336
+ "path": "projects/geo-ui/src/lib/figma/geo-login/geo-login.component.ts",
2337
+ "doc": "ai/components/geo-login.md",
2338
+ "inputs": [
2339
+ {
2340
+ "name": "title",
2341
+ "type": "string",
2342
+ "default": "'Đăng nhập hệ thống'",
2343
+ "note": ""
2344
+ },
2345
+ {
2346
+ "name": "subtitle",
2347
+ "type": "string",
2348
+ "default": "'Cổng tra cứu thông tin đất đai'",
2349
+ "note": ""
2350
+ },
2351
+ {
2352
+ "name": "captchaHint",
2353
+ "type": "string",
2354
+ "default": "'Nhập mã kiểm tra hiển thị bên cạnh'",
2355
+ "note": ""
2356
+ },
2357
+ {
2358
+ "name": "loading",
2359
+ "type": "boolean",
2360
+ "default": "false",
2361
+ "note": ""
2362
+ },
2363
+ {
2364
+ "name": "errorMessage",
2365
+ "type": "string",
2366
+ "default": "''",
2367
+ "note": ""
2368
+ },
2369
+ {
2370
+ "name": "showForgotPassword",
2371
+ "type": "boolean",
2372
+ "default": "true",
2373
+ "note": ""
2374
+ },
2375
+ {
2376
+ "name": "username",
2377
+ "type": "string",
2378
+ "default": "''",
2379
+ "note": "Two-way `model()` (supports banana binding)."
2380
+ },
2381
+ {
2382
+ "name": "password",
2383
+ "type": "string",
2384
+ "default": "''",
2385
+ "note": "Two-way `model()` (supports banana binding)."
2386
+ },
2387
+ {
2388
+ "name": "captcha",
2389
+ "type": "string",
2390
+ "default": "''",
2391
+ "note": "Two-way `model()` (supports banana binding)."
2392
+ },
2393
+ {
2394
+ "name": "remember",
2395
+ "type": "boolean",
2396
+ "default": "false",
2397
+ "note": "Two-way `model()` (supports banana binding)."
2398
+ }
2399
+ ],
2400
+ "outputs": [
2401
+ {
2402
+ "name": "submitLogin",
2403
+ "type": "OutputEmitterRef<GeoLoginPayload>",
2404
+ "note": ""
2405
+ },
2406
+ {
2407
+ "name": "forgotPassword",
2408
+ "type": "OutputEmitterRef<void>",
2409
+ "note": ""
2410
+ }
2411
+ ],
2412
+ "examples": [
2413
+ {
2414
+ "title": "Example",
2415
+ "lang": "html"
2416
+ }
2417
+ ],
2418
+ "example": "<geo-login></geo-login>",
2419
+ "related": []
2420
+ },
2421
+ {
2422
+ "name": "GeoMapComponent",
2423
+ "selector": "geo-map",
2424
+ "category": "map",
2425
+ "summary": "OpenLayers map host with basemap, typed layers, and GeoMapController.",
2426
+ "whenToUse": "Any map viewport (portal quy hoạch, tra cứu thửa). Peers: ol, proj4.",
2427
+ "doNotUseWhen": "Non-map charting — use dashboard libs.",
2428
+ "howTo": "",
2429
+ "tips": [],
2430
+ "binding": "none",
2431
+ "cva": false,
2432
+ "path": "projects/geo-ui/src/lib/figma/geo-map/geo-map.component.ts",
2433
+ "doc": "ai/components/geo-map.md",
2434
+ "inputs": [
2435
+ {
2436
+ "name": "center",
2437
+ "type": "number[]",
2438
+ "default": "[...GEO_MAP_DEFAULT_CENTER]",
2439
+ "note": "Map center in view projection (default Web Mercator Đà Lạt area)."
2440
+ },
2441
+ {
2442
+ "name": "zoom",
2443
+ "type": "",
2444
+ "default": "GEO_MAP_DEFAULT_ZOOM",
2445
+ "note": ""
2446
+ },
2447
+ {
2448
+ "name": "minZoom",
2449
+ "type": "",
2450
+ "default": "GEO_MAP_DEFAULT_MIN_ZOOM",
2451
+ "note": ""
2452
+ },
2453
+ {
2454
+ "name": "maxZoom",
2455
+ "type": "",
2456
+ "default": "GEO_MAP_DEFAULT_MAX_ZOOM",
2457
+ "note": ""
2458
+ },
2459
+ {
2460
+ "name": "viewProjection",
2461
+ "type": "",
2462
+ "default": "GEO_MAP_DEFAULT_VIEW_PROJECTION",
2463
+ "note": ""
2464
+ },
2465
+ {
2466
+ "name": "basemap",
2467
+ "type": "'osm' | { type: 'xyz'",
2468
+ "default": "'osm'",
2469
+ "note": ""
2470
+ },
2471
+ {
2472
+ "name": "layers",
2473
+ "type": "(| GeoMapOsmLayerConfig | GeoMapXyzLayerConfig | GeoMapWmsLayerConfig | GeoMapWmtsLayerConfig | G…",
2474
+ "default": "[]",
2475
+ "note": ""
2476
+ },
2477
+ {
2478
+ "name": "height",
2479
+ "type": "",
2480
+ "default": "GEO_MAP_DEFAULT_HEIGHT",
2481
+ "note": ""
2482
+ },
2483
+ {
2484
+ "name": "registerProjections",
2485
+ "type": "boolean",
2486
+ "default": "true",
2487
+ "note": "When true, custom projections listed in `projections` are registered before map create. Built-in EPSG:4326 / EPSG:3857 never need registration. VN-2000 definitions must be supplied via `projections` — never invented."
2488
+ },
2489
+ {
2490
+ "name": "projections",
2491
+ "type": "ProjectionConfig[]",
2492
+ "default": "[]",
2493
+ "note": "Custom CRS definitions (e.g. local VN-2000 from environment)."
2494
+ },
2495
+ {
2496
+ "name": "showMousePosition",
2497
+ "type": "boolean",
2498
+ "default": "false",
2499
+ "note": ""
2500
+ },
2501
+ {
2502
+ "name": "mousePositionProjection",
2503
+ "type": "string",
2504
+ "default": "'EPSG:4326'",
2505
+ "note": ""
2506
+ },
2507
+ {
2508
+ "name": "showZoomControl",
2509
+ "type": "boolean",
2510
+ "default": "true",
2511
+ "note": "When false, hide built-in OL zoom control (prefer `geo-map-zoom`)."
2512
+ }
2513
+ ],
2514
+ "outputs": [
2515
+ {
2516
+ "name": "mapReady",
2517
+ "type": "OutputEmitterRef<GeoMapController>",
2518
+ "note": ""
2519
+ },
2520
+ {
2521
+ "name": "mapClick",
2522
+ "type": "OutputEmitterRef<GeoMapClickEvent>",
2523
+ "note": ""
2524
+ },
2525
+ {
2526
+ "name": "viewChange",
2527
+ "type": "OutputEmitterRef<GeoMapViewChangeEvent>",
2528
+ "note": ""
2529
+ },
2530
+ {
2531
+ "name": "initError",
2532
+ "type": "OutputEmitterRef<string>",
2533
+ "note": ""
2534
+ }
2535
+ ],
2536
+ "examples": [
2537
+ {
2538
+ "title": "Example",
2539
+ "lang": "html",
2540
+ "code": "<geo-map\n [center]=\"center\"\n [zoom]=\"12\"\n [layers]=\"layers\"\n height=\"480px\"\n (mapReady)=\"ctrl = $event\"\n></geo-map>"
2541
+ }
2542
+ ],
2543
+ "example": "<geo-map\n [center]=\"center\"\n [zoom]=\"12\"\n [layers]=\"layers\"\n height=\"480px\"\n (mapReady)=\"ctrl = $event\"\n></geo-map>",
2544
+ "related": []
2545
+ },
2546
+ {
2547
+ "name": "GeoMapAdminFilterComponent",
2548
+ "selector": "geo-map-admin-filter",
2549
+ "category": "other",
2550
+ "summary": "GeoMapAdminFilterComponent",
2551
+ "whenToUse": "",
2552
+ "doNotUseWhen": "",
2553
+ "howTo": "",
2554
+ "tips": [],
2555
+ "binding": "none",
2556
+ "cva": false,
2557
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.ts",
2558
+ "doc": "ai/components/geo-map-admin-filter.md",
2559
+ "inputs": [
2560
+ {
2561
+ "name": "open",
2562
+ "type": "boolean",
2563
+ "default": "false",
2564
+ "note": "Two-way `model()` (supports banana binding)."
2565
+ },
2566
+ {
2567
+ "name": "title",
2568
+ "type": "string",
2569
+ "default": "'Đơn vị hành chính'",
2570
+ "note": ""
2571
+ },
2572
+ {
2573
+ "name": "nodes",
2574
+ "type": "GeoTreeNode[]",
2575
+ "default": "[]",
2576
+ "note": ""
2577
+ },
2578
+ {
2579
+ "name": "checkedKeys",
2580
+ "type": "Array<string | number>",
2581
+ "default": "[]",
2582
+ "note": "Two-way `model()` (supports banana binding)."
2583
+ },
2584
+ {
2585
+ "name": "expandedKeys",
2586
+ "type": "Array<string | number>",
2587
+ "default": "[]",
2588
+ "note": "Two-way `model()` (supports banana binding)."
2589
+ }
2590
+ ],
2591
+ "outputs": [
2592
+ {
2593
+ "name": "apply",
2594
+ "type": "OutputEmitterRef<Array<string | number>>",
2595
+ "note": ""
2596
+ },
2597
+ {
2598
+ "name": "reset",
2599
+ "type": "OutputEmitterRef<void>",
2600
+ "note": ""
2601
+ },
2602
+ {
2603
+ "name": "fitProvince",
2604
+ "type": "OutputEmitterRef<void>",
2605
+ "note": ""
2606
+ },
2607
+ {
2608
+ "name": "closed",
2609
+ "type": "OutputEmitterRef<void>",
2610
+ "note": ""
2611
+ },
2612
+ {
2613
+ "name": "selectionChange",
2614
+ "type": "OutputEmitterRef<Array<string | number>>",
2615
+ "note": ""
2616
+ }
2617
+ ],
2618
+ "examples": [
2619
+ {
2620
+ "title": "Example",
2621
+ "lang": "html"
2622
+ }
2623
+ ],
2624
+ "example": "<geo-map-admin-filter></geo-map-admin-filter>",
2625
+ "related": []
2626
+ },
2627
+ {
2628
+ "name": "GeoMapBasemapSwitcherComponent",
2629
+ "selector": "geo-map-basemap-switcher",
2630
+ "category": "other",
2631
+ "summary": "GeoMapBasemapSwitcherComponent",
2632
+ "whenToUse": "",
2633
+ "doNotUseWhen": "",
2634
+ "howTo": "",
2635
+ "tips": [],
2636
+ "binding": "none",
2637
+ "cva": false,
2638
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.ts",
2639
+ "doc": "ai/components/geo-map-basemap-switcher.md",
2640
+ "inputs": [
2641
+ {
2642
+ "name": "options",
2643
+ "type": "GeoMapBasemapOption[]",
2644
+ "default": "GEO_MAP_DEFAULT_BASEMAP_OPTIONS",
2645
+ "note": "Exactly two options (street + satellite). Extra items are ignored."
2646
+ },
2647
+ {
2648
+ "name": "selectedId",
2649
+ "type": "string",
2650
+ "default": "'osm'",
2651
+ "note": "Two-way `model()` (supports banana binding)."
2652
+ },
2653
+ {
2654
+ "name": "label",
2655
+ "type": "string",
2656
+ "default": "'Lớp bản đồ'",
2657
+ "note": "Caption on the thumbnail card (design: «Lớp bản đồ»)."
2658
+ },
2659
+ {
2660
+ "name": "tooltip",
2661
+ "type": "string",
2662
+ "default": "'Đổi lớp bản đồ nền'",
2663
+ "note": ""
2664
+ }
2665
+ ],
2666
+ "outputs": [
2667
+ {
2668
+ "name": "basemapChange",
2669
+ "type": "OutputEmitterRef<GeoMapBasemap>",
2670
+ "note": ""
2671
+ }
2672
+ ],
2673
+ "examples": [
2674
+ {
2675
+ "title": "Example",
2676
+ "lang": "html"
2677
+ }
2678
+ ],
2679
+ "example": "<geo-map-basemap-switcher></geo-map-basemap-switcher>",
2680
+ "related": []
2681
+ },
2682
+ {
2683
+ "name": "GeoMapHelpComponent",
2684
+ "selector": "geo-map-help",
2685
+ "category": "other",
2686
+ "summary": "GeoMapHelpComponent",
2687
+ "whenToUse": "",
2688
+ "doNotUseWhen": "",
2689
+ "howTo": "",
2690
+ "tips": [],
2691
+ "binding": "none",
2692
+ "cva": false,
2693
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.ts",
2694
+ "doc": "ai/components/geo-map-help.md",
2695
+ "inputs": [
2696
+ {
2697
+ "name": "open",
2698
+ "type": "boolean",
2699
+ "default": "false",
2700
+ "note": "Two-way `model()` (supports banana binding)."
2701
+ },
2702
+ {
2703
+ "name": "title",
2704
+ "type": "string",
2705
+ "default": "'Hướng dẫn sử dụng'",
2706
+ "note": ""
2707
+ },
2708
+ {
2709
+ "name": "sections",
2710
+ "type": "GeoMapHelpSection[]",
2711
+ "default": "GEO_MAP_DEFAULT_HELP_SECTIONS",
2712
+ "note": ""
2713
+ }
2714
+ ],
2715
+ "outputs": [],
2716
+ "examples": [
2717
+ {
2718
+ "title": "Example",
2719
+ "lang": "html"
2720
+ }
2721
+ ],
2722
+ "example": "<geo-map-help></geo-map-help>",
2723
+ "related": []
2724
+ },
2725
+ {
2726
+ "name": "GeoMapLayerCardComponent",
2727
+ "selector": "geo-map-layer-card",
2728
+ "category": "other",
2729
+ "summary": "GeoMapLayerCardComponent",
2730
+ "whenToUse": "",
2731
+ "doNotUseWhen": "",
2732
+ "howTo": "",
2733
+ "tips": [],
2734
+ "binding": "none",
2735
+ "cva": false,
2736
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.ts",
2737
+ "doc": "ai/components/geo-map-layer-card.md",
2738
+ "inputs": [
2739
+ {
2740
+ "name": "title",
2741
+ "type": "string",
2742
+ "default": "'Lớp bản đồ'",
2743
+ "note": ""
2744
+ },
2745
+ {
2746
+ "name": "previewUrl",
2747
+ "type": "string | undefined",
2748
+ "default": "undefined",
2749
+ "note": ""
2750
+ }
2751
+ ],
2752
+ "outputs": [
2753
+ {
2754
+ "name": "clicked",
2755
+ "type": "OutputEmitterRef<void>",
2756
+ "note": ""
2757
+ }
2758
+ ],
2759
+ "examples": [
2760
+ {
2761
+ "title": "Example",
2762
+ "lang": "html"
2763
+ }
2764
+ ],
2765
+ "example": "<geo-map-layer-card></geo-map-layer-card>",
2766
+ "related": []
2767
+ },
2768
+ {
2769
+ "name": "GeoMapLayerPanelComponent",
2770
+ "selector": "geo-map-layer-panel",
2771
+ "category": "other",
2772
+ "summary": "GeoMapLayerPanelComponent",
2773
+ "whenToUse": "",
2774
+ "doNotUseWhen": "",
2775
+ "howTo": "",
2776
+ "tips": [],
2777
+ "binding": "none",
2778
+ "cva": false,
2779
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.ts",
2780
+ "doc": "ai/components/geo-map-layer-panel.md",
2781
+ "inputs": [
2782
+ {
2783
+ "name": "controller",
2784
+ "type": "GeoMapController | null",
2785
+ "default": "null",
2786
+ "note": ""
2787
+ },
2788
+ {
2789
+ "name": "title",
2790
+ "type": "string",
2791
+ "default": "'Lớp bản đồ'",
2792
+ "note": ""
2793
+ },
2794
+ {
2795
+ "name": "embedded",
2796
+ "type": "boolean",
2797
+ "default": "false",
2798
+ "note": "When true, hide the panel's own header (host popover provides title)."
2799
+ },
2800
+ {
2801
+ "name": "layers",
2802
+ "type": "GeoMapLayerConfig[]",
2803
+ "default": "[]",
2804
+ "note": "Two-way `model()` (supports banana binding)."
2805
+ }
2806
+ ],
2807
+ "outputs": [
2808
+ {
2809
+ "name": "layersChange",
2810
+ "type": "OutputEmitterRef<GeoMapLayerConfig[]>",
2811
+ "note": ""
2812
+ }
2813
+ ],
2814
+ "examples": [
2815
+ {
2816
+ "title": "Example",
2817
+ "lang": "html"
2818
+ }
2819
+ ],
2820
+ "example": "<geo-map-layer-panel></geo-map-layer-panel>",
2821
+ "related": []
2822
+ },
2823
+ {
2824
+ "name": "GeoMapLayersDrawerComponent",
2825
+ "selector": "geo-map-layers-drawer",
2826
+ "category": "other",
2827
+ "summary": "GeoMapLayersDrawerComponent",
2828
+ "whenToUse": "",
2829
+ "doNotUseWhen": "",
2830
+ "howTo": "",
2831
+ "tips": [],
2832
+ "binding": "none",
2833
+ "cva": false,
2834
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.ts",
2835
+ "doc": "ai/components/geo-map-layers-drawer.md",
2836
+ "inputs": [
2837
+ {
2838
+ "name": "controller",
2839
+ "type": "GeoMapController | null",
2840
+ "default": "null",
2841
+ "note": ""
2842
+ },
2843
+ {
2844
+ "name": "open",
2845
+ "type": "boolean",
2846
+ "default": "false",
2847
+ "note": "Two-way `model()` (supports banana binding)."
2848
+ },
2849
+ {
2850
+ "name": "title",
2851
+ "type": "string",
2852
+ "default": "'Lớp bản đồ'",
2853
+ "note": ""
2854
+ },
2855
+ {
2856
+ "name": "legendItems",
2857
+ "type": "GeoMapLegendItem[]",
2858
+ "default": "[]",
2859
+ "note": ""
2860
+ },
2861
+ {
2862
+ "name": "showOpacity",
2863
+ "type": "boolean",
2864
+ "default": "false",
2865
+ "note": "Kept for API compat — opacity is per-layer in the new panel."
2866
+ },
2867
+ {
2868
+ "name": "showLegend",
2869
+ "type": "boolean",
2870
+ "default": "false",
2871
+ "note": "Kept for API compat — legend lives outside this popover."
2872
+ },
2873
+ {
2874
+ "name": "layers",
2875
+ "type": "GeoMapLayerConfig[]",
2876
+ "default": "[]",
2877
+ "note": "Two-way `model()` (supports banana binding)."
2878
+ }
2879
+ ],
2880
+ "outputs": [
2881
+ {
2882
+ "name": "closed",
2883
+ "type": "OutputEmitterRef<void>",
2884
+ "note": ""
2885
+ }
2886
+ ],
2887
+ "examples": [
2888
+ {
2889
+ "title": "Example",
2890
+ "lang": "html"
2891
+ }
2892
+ ],
2893
+ "example": "<geo-map-layers-drawer></geo-map-layers-drawer>",
2894
+ "related": []
2895
+ },
2896
+ {
2897
+ "name": "GeoMapLegendComponent",
2898
+ "selector": "geo-map-legend",
2899
+ "category": "other",
2900
+ "summary": "GeoMapLegendComponent",
2901
+ "whenToUse": "",
2902
+ "doNotUseWhen": "",
2903
+ "howTo": "",
2904
+ "tips": [],
2905
+ "binding": "none",
2906
+ "cva": false,
2907
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.ts",
2908
+ "doc": "ai/components/geo-map-legend.md",
2909
+ "inputs": [
2910
+ {
2911
+ "name": "title",
2912
+ "type": "string",
2913
+ "default": "'Chú giải'",
2914
+ "note": ""
2915
+ },
2916
+ {
2917
+ "name": "items",
2918
+ "type": "GeoMapLegendItem[]",
2919
+ "default": "[]",
2920
+ "note": ""
2921
+ },
2922
+ {
2923
+ "name": "open",
2924
+ "type": "boolean",
2925
+ "default": "false",
2926
+ "note": "Two-way `model()` (supports banana binding)."
2927
+ }
2928
+ ],
2929
+ "outputs": [
2930
+ {
2931
+ "name": "closed",
2932
+ "type": "OutputEmitterRef<void>",
2933
+ "note": ""
2934
+ }
2935
+ ],
2936
+ "examples": [
2937
+ {
2938
+ "title": "Example",
2939
+ "lang": "html"
2940
+ }
2941
+ ],
2942
+ "example": "<geo-map-legend></geo-map-legend>",
2943
+ "related": []
2944
+ },
2945
+ {
2946
+ "name": "GeoMapLocateComponent",
2947
+ "selector": "geo-map-locate",
2948
+ "category": "other",
2949
+ "summary": "GeoMapLocateComponent",
2950
+ "whenToUse": "",
2951
+ "doNotUseWhen": "",
2952
+ "howTo": "",
2953
+ "tips": [],
2954
+ "binding": "none",
2955
+ "cva": false,
2956
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.ts",
2957
+ "doc": "ai/components/geo-map-locate.md",
2958
+ "inputs": [
2959
+ {
2960
+ "name": "controller",
2961
+ "type": "GeoMapController | null",
2962
+ "default": "null",
2963
+ "note": ""
2964
+ },
2965
+ {
2966
+ "name": "label",
2967
+ "type": "string",
2968
+ "default": "'Vị trí của tôi'",
2969
+ "note": ""
2970
+ }
2971
+ ],
2972
+ "outputs": [
2973
+ {
2974
+ "name": "located",
2975
+ "type": "OutputEmitterRef<[number, number]>",
2976
+ "note": ""
2977
+ },
2978
+ {
2979
+ "name": "denied",
2980
+ "type": "OutputEmitterRef<void>",
2981
+ "note": ""
2982
+ },
2983
+ {
2984
+ "name": "locateError",
2985
+ "type": "OutputEmitterRef<{ reason: GeoMapLocateErrorReason; message?: string; }>",
2986
+ "note": ""
2987
+ }
2988
+ ],
2989
+ "examples": [
2990
+ {
2991
+ "title": "Example",
2992
+ "lang": "html"
2993
+ }
2994
+ ],
2995
+ "example": "<geo-map-locate></geo-map-locate>",
2996
+ "related": []
2997
+ },
2998
+ {
2999
+ "name": "GeoMapLocationChipComponent",
3000
+ "selector": "geo-map-location-chip",
3001
+ "category": "other",
3002
+ "summary": "GeoMapLocationChipComponent",
3003
+ "whenToUse": "",
3004
+ "doNotUseWhen": "",
3005
+ "howTo": "",
3006
+ "tips": [],
3007
+ "binding": "none",
3008
+ "cva": false,
3009
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.ts",
3010
+ "doc": "ai/components/geo-map-location-chip.md",
3011
+ "inputs": [
3012
+ {
3013
+ "name": "label",
3014
+ "type": "string",
3015
+ "default": "''",
3016
+ "note": ""
3017
+ },
3018
+ {
3019
+ "name": "icon",
3020
+ "type": "string",
3021
+ "default": "'environment'",
3022
+ "note": ""
3023
+ }
3024
+ ],
3025
+ "outputs": [],
3026
+ "examples": [
3027
+ {
3028
+ "title": "Example",
3029
+ "lang": "html"
3030
+ }
3031
+ ],
3032
+ "example": "<geo-map-location-chip></geo-map-location-chip>",
3033
+ "related": []
3034
+ },
3035
+ {
3036
+ "name": "GeoMapMeasureComponent",
3037
+ "selector": "geo-map-measure",
3038
+ "category": "other",
3039
+ "summary": "GeoMapMeasureComponent",
3040
+ "whenToUse": "",
3041
+ "doNotUseWhen": "",
3042
+ "howTo": "",
3043
+ "tips": [],
3044
+ "binding": "none",
3045
+ "cva": false,
3046
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.ts",
3047
+ "doc": "ai/components/geo-map-measure.md",
3048
+ "inputs": [
3049
+ {
3050
+ "name": "controller",
3051
+ "type": "GeoMapController | null",
3052
+ "default": "null",
3053
+ "note": ""
3054
+ },
3055
+ {
3056
+ "name": "mode",
3057
+ "type": "GeoMapMeasureMode",
3058
+ "default": "'none'",
3059
+ "note": "Two-way `model()` (supports banana binding)."
3060
+ },
3061
+ {
3062
+ "name": "showResult",
3063
+ "type": "boolean",
3064
+ "default": "true",
3065
+ "note": ""
3066
+ }
3067
+ ],
3068
+ "outputs": [
3069
+ {
3070
+ "name": "measureChange",
3071
+ "type": "OutputEmitterRef<GeoMapMeasureResult | null>",
3072
+ "note": ""
3073
+ }
3074
+ ],
3075
+ "examples": [
3076
+ {
3077
+ "title": "Example",
3078
+ "lang": "html"
3079
+ }
3080
+ ],
3081
+ "example": "<geo-map-measure></geo-map-measure>",
3082
+ "related": []
3083
+ },
3084
+ {
3085
+ "name": "GeoMapOpacityComponent",
3086
+ "selector": "geo-map-opacity",
3087
+ "category": "other",
3088
+ "summary": "GeoMapOpacityComponent",
3089
+ "whenToUse": "",
3090
+ "doNotUseWhen": "",
3091
+ "howTo": "",
3092
+ "tips": [],
3093
+ "binding": "none",
3094
+ "cva": false,
3095
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.ts",
3096
+ "doc": "ai/components/geo-map-opacity.md",
3097
+ "inputs": [
3098
+ {
3099
+ "name": "controller",
3100
+ "type": "GeoMapController | null",
3101
+ "default": "null",
3102
+ "note": ""
3103
+ },
3104
+ {
3105
+ "name": "title",
3106
+ "type": "string",
3107
+ "default": "'Độ trong suốt'",
3108
+ "note": ""
3109
+ },
3110
+ {
3111
+ "name": "layerId",
3112
+ "type": "string | null",
3113
+ "default": "null",
3114
+ "note": "Two-way `model()` (supports banana binding)."
3115
+ },
3116
+ {
3117
+ "name": "opacity",
3118
+ "type": "number",
3119
+ "default": "100",
3120
+ "note": "Opacity percent 0–100. — Two-way `model()` (supports banana binding)."
3121
+ },
3122
+ {
3123
+ "name": "variant",
3124
+ "type": "'panel' | 'compact'",
3125
+ "default": "'panel'",
3126
+ "note": ""
3127
+ },
3128
+ {
3129
+ "name": "applyToFirstLayer",
3130
+ "type": "boolean",
3131
+ "default": "true",
3132
+ "note": "When compact and no layerId, apply to first non-basemap overlay."
3133
+ }
3134
+ ],
3135
+ "outputs": [],
3136
+ "examples": [
3137
+ {
3138
+ "title": "Example",
3139
+ "lang": "html"
3140
+ }
3141
+ ],
3142
+ "example": "<geo-map-opacity></geo-map-opacity>",
3143
+ "related": []
3144
+ },
3145
+ {
3146
+ "name": "GeoMapParcelPopupComponent",
3147
+ "selector": "geo-map-parcel-popup",
3148
+ "category": "other",
3149
+ "summary": "GeoMapParcelPopupComponent",
3150
+ "whenToUse": "",
3151
+ "doNotUseWhen": "",
3152
+ "howTo": "",
3153
+ "tips": [],
3154
+ "binding": "none",
3155
+ "cva": false,
3156
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.ts",
3157
+ "doc": "ai/components/geo-map-parcel-popup.md",
3158
+ "inputs": [
3159
+ {
3160
+ "name": "open",
3161
+ "type": "boolean",
3162
+ "default": "false",
3163
+ "note": "Two-way `model()` (supports banana binding)."
3164
+ },
3165
+ {
3166
+ "name": "title",
3167
+ "type": "string",
3168
+ "default": "'Thông tin thửa đất'",
3169
+ "note": ""
3170
+ },
3171
+ {
3172
+ "name": "parcel",
3173
+ "type": "GeoMapParcelDetail | null",
3174
+ "default": "null",
3175
+ "note": ""
3176
+ },
3177
+ {
3178
+ "name": "audience",
3179
+ "type": "GeoMapParcelAudience",
3180
+ "default": "'citizen'",
3181
+ "note": ""
3182
+ },
3183
+ {
3184
+ "name": "showExport",
3185
+ "type": "boolean",
3186
+ "default": "false",
3187
+ "note": "Giữ tương thích API cũ; footer xuất file không còn trong layout thiết kế."
3188
+ }
3189
+ ],
3190
+ "outputs": [
3191
+ {
3192
+ "name": "closed",
3193
+ "type": "OutputEmitterRef<void>",
3194
+ "note": ""
3195
+ },
3196
+ {
3197
+ "name": "back",
3198
+ "type": "OutputEmitterRef<void>",
3199
+ "note": ""
3200
+ },
3201
+ {
3202
+ "name": "exportClick",
3203
+ "type": "OutputEmitterRef<GeoMapParcelDetail>",
3204
+ "note": ""
3205
+ },
3206
+ {
3207
+ "name": "diagramClick",
3208
+ "type": "OutputEmitterRef<GeoMapParcelDetail>",
3209
+ "note": ""
3210
+ }
3211
+ ],
3212
+ "examples": [
3213
+ {
3214
+ "title": "Example",
3215
+ "lang": "html"
3216
+ }
3217
+ ],
3218
+ "example": "<geo-map-parcel-popup></geo-map-parcel-popup>",
3219
+ "related": []
3220
+ },
3221
+ {
3222
+ "name": "GeoMapSearchComponent",
3223
+ "selector": "geo-map-search",
3224
+ "category": "other",
3225
+ "summary": "GeoMapSearchComponent",
3226
+ "whenToUse": "",
3227
+ "doNotUseWhen": "",
3228
+ "howTo": "",
3229
+ "tips": [],
3230
+ "binding": "none",
3231
+ "cva": false,
3232
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.ts",
3233
+ "doc": "ai/components/geo-map-search.md",
3234
+ "inputs": [
3235
+ {
3236
+ "name": "open",
3237
+ "type": "boolean",
3238
+ "default": "false",
3239
+ "note": "Two-way `model()` (supports banana binding)."
3240
+ },
3241
+ {
3242
+ "name": "title",
3243
+ "type": "string",
3244
+ "default": "'Tra cứu thông tin quy hoạch theo'",
3245
+ "note": ""
3246
+ },
3247
+ {
3248
+ "name": "mode",
3249
+ "type": "GeoMapSearchMode",
3250
+ "default": "'parcel'",
3251
+ "note": "Two-way `model()` (supports banana binding)."
3252
+ },
3253
+ {
3254
+ "name": "results",
3255
+ "type": "GeoMapSearchResultItem[]",
3256
+ "default": "[]",
3257
+ "note": ""
3258
+ },
3259
+ {
3260
+ "name": "loading",
3261
+ "type": "boolean",
3262
+ "default": "false",
3263
+ "note": ""
3264
+ },
3265
+ {
3266
+ "name": "pageIndex",
3267
+ "type": "number",
3268
+ "default": "1",
3269
+ "note": "Two-way `model()` (supports banana binding)."
3270
+ },
3271
+ {
3272
+ "name": "pageSize",
3273
+ "type": "number",
3274
+ "default": "5",
3275
+ "note": "Two-way `model()` (supports banana binding)."
3276
+ },
3277
+ {
3278
+ "name": "total",
3279
+ "type": "number",
3280
+ "default": "0",
3281
+ "note": ""
3282
+ },
3283
+ {
3284
+ "name": "emptyText",
3285
+ "type": "string",
3286
+ "default": "'Chưa có kết quả tra cứu.'",
3287
+ "note": ""
3288
+ }
3289
+ ],
3290
+ "outputs": [
3291
+ {
3292
+ "name": "search",
3293
+ "type": "OutputEmitterRef<GeoMapSearchQuery>",
3294
+ "note": ""
3295
+ },
3296
+ {
3297
+ "name": "reset",
3298
+ "type": "OutputEmitterRef<void>",
3299
+ "note": ""
3300
+ },
3301
+ {
3302
+ "name": "resultSelect",
3303
+ "type": "OutputEmitterRef<GeoMapSearchResultItem>",
3304
+ "note": ""
3305
+ },
3306
+ {
3307
+ "name": "closed",
3308
+ "type": "OutputEmitterRef<void>",
3309
+ "note": ""
3310
+ }
3311
+ ],
3312
+ "examples": [
3313
+ {
3314
+ "title": "Example",
3315
+ "lang": "html"
3316
+ }
3317
+ ],
3318
+ "example": "<geo-map-search></geo-map-search>",
3319
+ "related": []
3320
+ },
3321
+ {
3322
+ "name": "GeoMapShellComponent",
3323
+ "selector": "geo-map-shell",
3324
+ "category": "other",
3325
+ "summary": "GeoMapShellComponent",
3326
+ "whenToUse": "",
3327
+ "doNotUseWhen": "",
3328
+ "howTo": "",
3329
+ "tips": [],
3330
+ "binding": "none",
3331
+ "cva": false,
3332
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.ts",
3333
+ "doc": "ai/components/geo-map-shell.md",
3334
+ "inputs": [
3335
+ {
3336
+ "name": "center",
3337
+ "type": "number[]",
3338
+ "default": "[...GEO_MAP_DEFAULT_CENTER]",
3339
+ "note": ""
3340
+ },
3341
+ {
3342
+ "name": "zoom",
3343
+ "type": "",
3344
+ "default": "GEO_MAP_DEFAULT_ZOOM",
3345
+ "note": ""
3346
+ },
3347
+ {
3348
+ "name": "height",
3349
+ "type": "string",
3350
+ "default": "'560px'",
3351
+ "note": ""
3352
+ },
3353
+ {
3354
+ "name": "showMousePosition",
3355
+ "type": "boolean",
3356
+ "default": "false",
3357
+ "note": ""
3358
+ },
3359
+ {
3360
+ "name": "basemapOptions",
3361
+ "type": "GeoMapBasemapOption[]",
3362
+ "default": "GEO_MAP_DEFAULT_BASEMAP_OPTIONS",
3363
+ "note": ""
3364
+ },
3365
+ {
3366
+ "name": "toolbarActions",
3367
+ "type": "GeoMapToolbarAction[]",
3368
+ "default": "GEO_MAP_DEFAULT_TOOLBAR_ACTIONS",
3369
+ "note": ""
3370
+ },
3371
+ {
3372
+ "name": "layers",
3373
+ "type": "GeoMapLayerConfig[]",
3374
+ "default": "[]",
3375
+ "note": "Extra overlays merged after demo thematic + traffic."
3376
+ },
3377
+ {
3378
+ "name": "legendItems",
3379
+ "type": "GeoMapLegendItem[]",
3380
+ "default": "GEO_MAP_DEMO_LEGEND_ITEMS",
3381
+ "note": ""
3382
+ },
3383
+ {
3384
+ "name": "showNav",
3385
+ "type": "boolean",
3386
+ "default": "true",
3387
+ "note": ""
3388
+ },
3389
+ {
3390
+ "name": "includeDemoLayers",
3391
+ "type": "boolean",
3392
+ "default": "true",
3393
+ "note": ""
3394
+ },
3395
+ {
3396
+ "name": "adminNodes",
3397
+ "type": "GeoTreeNode[]",
3398
+ "default": "GEO_MAP_DEMO_ADMIN_NODES",
3399
+ "note": ""
3400
+ },
3401
+ {
3402
+ "name": "locationLabel",
3403
+ "type": "string",
3404
+ "default": "'Phường 1 — TP Đà Lạt, Lâm Đồng'",
3405
+ "note": ""
3406
+ },
3407
+ {
3408
+ "name": "parcelAudience",
3409
+ "type": "GeoMapParcelAudience",
3410
+ "default": "'citizen'",
3411
+ "note": ""
3412
+ },
3413
+ {
3414
+ "name": "provinceExtent",
3415
+ "type": "readonly [number, number, number, number]",
3416
+ "default": "GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326",
3417
+ "note": ""
3418
+ },
3419
+ {
3420
+ "name": "demoSearch",
3421
+ "type": "boolean",
3422
+ "default": "true",
3423
+ "note": "When true, shell seeds mock search results (Storybook / demos)."
3424
+ },
3425
+ {
3426
+ "name": "homeMode",
3427
+ "type": "'location' | 'emit'",
3428
+ "default": "'location'",
3429
+ "note": "`location` — Home opens ĐVHC filter (default). `emit` — Home only emits `actionClick` (e.g. portal navigates to login/dashboard)."
3430
+ },
3431
+ {
3432
+ "name": "basemapId",
3433
+ "type": "string",
3434
+ "default": "'osm'",
3435
+ "note": "Two-way `model()` (supports banana binding)."
3436
+ },
3437
+ {
3438
+ "name": "measureMode",
3439
+ "type": "GeoMapMeasureMode",
3440
+ "default": "'none'",
3441
+ "note": "Two-way `model()` (supports banana binding)."
3442
+ },
3443
+ {
3444
+ "name": "checkedMap",
3445
+ "type": "Record<string, boolean>",
3446
+ "default": "",
3447
+ "note": "Two-way `model()` (supports banana binding)."
3448
+ },
3449
+ {
3450
+ "name": "layersOpen",
3451
+ "type": "boolean",
3452
+ "default": "false",
3453
+ "note": "Two-way `model()` (supports banana binding)."
3454
+ },
3455
+ {
3456
+ "name": "legendOpen",
3457
+ "type": "boolean",
3458
+ "default": "false",
3459
+ "note": "Two-way `model()` (supports banana binding)."
3460
+ },
3461
+ {
3462
+ "name": "helpOpen",
3463
+ "type": "boolean",
3464
+ "default": "false",
3465
+ "note": "Two-way `model()` (supports banana binding)."
3466
+ },
3467
+ {
3468
+ "name": "swipeActive",
3469
+ "type": "boolean",
3470
+ "default": "false",
3471
+ "note": "Two-way `model()` (supports banana binding)."
3472
+ },
3473
+ {
3474
+ "name": "searchOpen",
3475
+ "type": "boolean",
3476
+ "default": "false",
3477
+ "note": "Two-way `model()` (supports banana binding)."
3478
+ },
3479
+ {
3480
+ "name": "adminFilterOpen",
3481
+ "type": "boolean",
3482
+ "default": "false",
3483
+ "note": "Two-way `model()` (supports banana binding)."
3484
+ },
3485
+ {
3486
+ "name": "parcelOpen",
3487
+ "type": "boolean",
3488
+ "default": "false",
3489
+ "note": "Two-way `model()` (supports banana binding)."
3490
+ },
3491
+ {
3492
+ "name": "managedLayers",
3493
+ "type": "GeoMapLayerConfig[]",
3494
+ "default": "[]",
3495
+ "note": "Two-way `model()` (supports banana binding)."
3496
+ },
3497
+ {
3498
+ "name": "searchResults",
3499
+ "type": "GeoMapSearchResultItem[]",
3500
+ "default": "[]",
3501
+ "note": "Two-way `model()` (supports banana binding)."
3502
+ },
3503
+ {
3504
+ "name": "selectedParcel",
3505
+ "type": "GeoMapParcelDetail | null",
3506
+ "default": "null",
3507
+ "note": "Two-way `model()` (supports banana binding)."
3508
+ },
3509
+ {
3510
+ "name": "adminCheckedKeys",
3511
+ "type": "Array<string | number>",
3512
+ "default": "[]",
3513
+ "note": "Two-way `model()` (supports banana binding)."
3514
+ },
3515
+ {
3516
+ "name": "adminExpandedKeys",
3517
+ "type": "Array<string | number>",
3518
+ "default": "['lam-dong']",
3519
+ "note": "Two-way `model()` (supports banana binding)."
3520
+ }
3521
+ ],
3522
+ "outputs": [
3523
+ {
3524
+ "name": "mapReady",
3525
+ "type": "OutputEmitterRef<GeoMapController>",
3526
+ "note": ""
3527
+ },
3528
+ {
3529
+ "name": "mapClick",
3530
+ "type": "OutputEmitterRef<GeoMapClickEvent>",
3531
+ "note": ""
3532
+ },
3533
+ {
3534
+ "name": "locateDenied",
3535
+ "type": "OutputEmitterRef<void>",
3536
+ "note": ""
3537
+ },
3538
+ {
3539
+ "name": "actionClick",
3540
+ "type": "OutputEmitterRef<GeoMapToolbarAction>",
3541
+ "note": ""
3542
+ },
3543
+ {
3544
+ "name": "search",
3545
+ "type": "OutputEmitterRef<GeoMapSearchQuery>",
3546
+ "note": ""
3547
+ },
3548
+ {
3549
+ "name": "searchReset",
3550
+ "type": "OutputEmitterRef<void>",
3551
+ "note": ""
3552
+ },
3553
+ {
3554
+ "name": "resultSelect",
3555
+ "type": "OutputEmitterRef<GeoMapSearchResultItem>",
3556
+ "note": ""
3557
+ },
3558
+ {
3559
+ "name": "parcelExport",
3560
+ "type": "OutputEmitterRef<GeoMapParcelDetail>",
3561
+ "note": ""
3562
+ },
3563
+ {
3564
+ "name": "adminApply",
3565
+ "type": "OutputEmitterRef<Array<string | number>>",
3566
+ "note": ""
3567
+ }
3568
+ ],
3569
+ "examples": [
3570
+ {
3571
+ "title": "Example",
3572
+ "lang": "html"
3573
+ }
3574
+ ],
3575
+ "example": "<geo-map-shell></geo-map-shell>",
3576
+ "related": []
3577
+ },
3578
+ {
3579
+ "name": "GeoMapSnapshotComponent",
3580
+ "selector": "geo-map-snapshot",
3581
+ "category": "other",
3582
+ "summary": "GeoMapSnapshotComponent",
3583
+ "whenToUse": "",
3584
+ "doNotUseWhen": "",
3585
+ "howTo": "",
3586
+ "tips": [],
3587
+ "binding": "none",
3588
+ "cva": false,
3589
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.ts",
3590
+ "doc": "ai/components/geo-map-snapshot.md",
3591
+ "inputs": [
3592
+ {
3593
+ "name": "controller",
3594
+ "type": "GeoMapController | null",
3595
+ "default": "null",
3596
+ "note": ""
3597
+ },
3598
+ {
3599
+ "name": "label",
3600
+ "type": "string",
3601
+ "default": "'Chụp ảnh bản đồ'",
3602
+ "note": ""
3603
+ },
3604
+ {
3605
+ "name": "filename",
3606
+ "type": "string",
3607
+ "default": "'ban-do.png'",
3608
+ "note": ""
3609
+ }
3610
+ ],
3611
+ "outputs": [
3612
+ {
3613
+ "name": "captured",
3614
+ "type": "OutputEmitterRef<void>",
3615
+ "note": ""
3616
+ },
3617
+ {
3618
+ "name": "captureError",
3619
+ "type": "OutputEmitterRef<unknown>",
3620
+ "note": ""
3621
+ }
3622
+ ],
3623
+ "examples": [
3624
+ {
3625
+ "title": "Example",
3626
+ "lang": "html"
3627
+ }
3628
+ ],
3629
+ "example": "<geo-map-snapshot></geo-map-snapshot>",
3630
+ "related": []
3631
+ },
3632
+ {
3633
+ "name": "GeoMapSwipeComponent",
3634
+ "selector": "geo-map-swipe",
3635
+ "category": "other",
3636
+ "summary": "GeoMapSwipeComponent",
3637
+ "whenToUse": "",
3638
+ "doNotUseWhen": "",
3639
+ "howTo": "",
3640
+ "tips": [],
3641
+ "binding": "none",
3642
+ "cva": false,
3643
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.ts",
3644
+ "doc": "ai/components/geo-map-swipe.md",
3645
+ "inputs": [
3646
+ {
3647
+ "name": "controller",
3648
+ "type": "GeoMapController | null",
3649
+ "default": "null",
3650
+ "note": ""
3651
+ },
3652
+ {
3653
+ "name": "active",
3654
+ "type": "boolean",
3655
+ "default": "false",
3656
+ "note": "When true, swipe mode is on. — Two-way `model()` (supports banana binding)."
3657
+ },
3658
+ {
3659
+ "name": "position",
3660
+ "type": "number",
3661
+ "default": "50",
3662
+ "note": "0–100, left portion shows clipped overlay. — Two-way `model()` (supports banana binding)."
3663
+ },
3664
+ {
3665
+ "name": "layerId",
3666
+ "type": "string | null",
3667
+ "default": "null",
3668
+ "note": "Optional explicit overlay layer id; defaults to top visible non-basemap."
3669
+ }
3670
+ ],
3671
+ "outputs": [],
3672
+ "examples": [
3673
+ {
3674
+ "title": "Example",
3675
+ "lang": "html"
3676
+ }
3677
+ ],
3678
+ "example": "<geo-map-swipe></geo-map-swipe>",
3679
+ "related": []
3680
+ },
3681
+ {
3682
+ "name": "GeoMapToolbarComponent",
3683
+ "selector": "geo-map-toolbar",
3684
+ "category": "other",
3685
+ "summary": "GeoMapToolbarComponent",
3686
+ "whenToUse": "",
3687
+ "doNotUseWhen": "",
3688
+ "howTo": "",
3689
+ "tips": [],
3690
+ "binding": "none",
3691
+ "cva": false,
3692
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.ts",
3693
+ "doc": "ai/components/geo-map-toolbar.md",
3694
+ "inputs": [
3695
+ {
3696
+ "name": "controller",
3697
+ "type": "GeoMapController | null",
3698
+ "default": "null",
3699
+ "note": ""
3700
+ },
3701
+ {
3702
+ "name": "actions",
3703
+ "type": "GeoMapToolbarAction[]",
3704
+ "default": "[]",
3705
+ "note": "When empty, uses built-in portal action set."
3706
+ },
3707
+ {
3708
+ "name": "compact",
3709
+ "type": "boolean",
3710
+ "default": "false",
3711
+ "note": ""
3712
+ },
3713
+ {
3714
+ "name": "checkedMap",
3715
+ "type": "Record<string, boolean>",
3716
+ "default": "",
3717
+ "note": "Two-way checked map keyed by action id (for checkbox-style actions). — Two-way `model()` (supports banana binding)."
3718
+ }
3719
+ ],
3720
+ "outputs": [
3721
+ {
3722
+ "name": "actionClick",
3723
+ "type": "OutputEmitterRef<GeoMapToolbarAction>",
3724
+ "note": ""
3725
+ },
3726
+ {
3727
+ "name": "actionToggle",
3728
+ "type": "OutputEmitterRef<{ action: GeoMapToolbarAction; checked: boolean; }>",
3729
+ "note": ""
3730
+ }
3731
+ ],
3732
+ "examples": [
3733
+ {
3734
+ "title": "Example",
3735
+ "lang": "html"
3736
+ }
3737
+ ],
3738
+ "example": "<geo-map-toolbar></geo-map-toolbar>",
3739
+ "related": []
3740
+ },
3741
+ {
3742
+ "name": "GeoMapZoomComponent",
3743
+ "selector": "geo-map-zoom",
3744
+ "category": "other",
3745
+ "summary": "GeoMapZoomComponent",
3746
+ "whenToUse": "",
3747
+ "doNotUseWhen": "",
3748
+ "howTo": "",
3749
+ "tips": [],
3750
+ "binding": "none",
3751
+ "cva": false,
3752
+ "path": "projects/geo-ui/src/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.ts",
3753
+ "doc": "ai/components/geo-map-zoom.md",
3754
+ "inputs": [
3755
+ {
3756
+ "name": "controller",
3757
+ "type": "GeoMapController | null",
3758
+ "default": "null",
3759
+ "note": ""
3760
+ },
3761
+ {
3762
+ "name": "showNav",
1316
3763
  "type": "boolean",
1317
- "default": "false",
1318
- "note": ""
3764
+ "default": "true",
3765
+ "note": "Show prev / next zoom + fullscreen + box zoom (UC-15)."
1319
3766
  },
1320
3767
  {
1321
- "name": "errorMessage",
1322
- "type": "string",
1323
- "default": "''",
1324
- "note": ""
3768
+ "name": "showFitProvince",
3769
+ "type": "boolean",
3770
+ "default": "true",
3771
+ "note": "Show “xem toàn tỉnh” (TCQH.14 GD5) — fit province extent, not fullscreen."
1325
3772
  },
1326
3773
  {
1327
- "name": "maxlength",
1328
- "type": "number",
1329
- "default": "",
1330
- "note": ""
3774
+ "name": "provinceExtent",
3775
+ "type": "readonly [number, number, number, number] | null",
3776
+ "default": "null",
3777
+ "note": "Province extent in EPSG:4326. Defaults to Lâm Đồng placeholder when omitted."
1331
3778
  },
1332
3779
  {
1333
- "name": "prefixIcon",
1334
- "type": "string",
1335
- "default": "",
1336
- "note": ""
1337
- },
3780
+ "name": "fullscreenTarget",
3781
+ "type": "HTMLElement | null",
3782
+ "default": "null",
3783
+ "note": "Element to put in Fullscreen API. Defaults to closest `.geo-map-shell`, then the OL map target."
3784
+ }
3785
+ ],
3786
+ "outputs": [],
3787
+ "examples": [
1338
3788
  {
1339
- "name": "suffixIcon",
3789
+ "title": "Example",
3790
+ "lang": "html"
3791
+ }
3792
+ ],
3793
+ "example": "<geo-map-zoom></geo-map-zoom>",
3794
+ "related": []
3795
+ },
3796
+ {
3797
+ "name": "GeoOverlapResultComponent",
3798
+ "selector": "geo-overlap-result",
3799
+ "category": "other",
3800
+ "summary": "GeoOverlapResultComponent",
3801
+ "whenToUse": "",
3802
+ "doNotUseWhen": "",
3803
+ "howTo": "",
3804
+ "tips": [],
3805
+ "binding": "none",
3806
+ "cva": false,
3807
+ "path": "projects/geo-ui/src/lib/figma/geo-overlap-result/geo-overlap-result.component.ts",
3808
+ "doc": "ai/components/geo-overlap-result.md",
3809
+ "inputs": [
3810
+ {
3811
+ "name": "title",
1340
3812
  "type": "string",
1341
- "default": "",
3813
+ "default": "'Kết quả phân tích chồng lấn'",
1342
3814
  "note": ""
1343
3815
  },
1344
3816
  {
1345
- "name": "allowClear",
1346
- "type": "boolean",
1347
- "default": "false",
3817
+ "name": "rows",
3818
+ "type": "GeoOverlapResultRow[]",
3819
+ "default": "[]",
1348
3820
  "note": ""
1349
3821
  },
1350
3822
  {
1351
- "name": "block",
1352
- "type": "boolean",
1353
- "default": "false",
3823
+ "name": "areaUnit",
3824
+ "type": "string",
3825
+ "default": "'m²'",
1354
3826
  "note": ""
1355
3827
  },
1356
3828
  {
1357
- "name": "width",
1358
- "type": "number | string",
1359
- "default": "",
3829
+ "name": "emptyText",
3830
+ "type": "string",
3831
+ "default": "'Chưa có kết quả phân tích.'",
1360
3832
  "note": ""
1361
3833
  }
1362
3834
  ],
1363
3835
  "outputs": [
1364
3836
  {
1365
- "name": "valueChange",
1366
- "type": "EventEmitter<string>",
3837
+ "name": "rowClick",
3838
+ "type": "OutputEmitterRef<GeoOverlapResultRow>",
3839
+ "note": ""
3840
+ }
3841
+ ],
3842
+ "examples": [
3843
+ {
3844
+ "title": "Example",
3845
+ "lang": "html"
3846
+ }
3847
+ ],
3848
+ "example": "<geo-overlap-result></geo-overlap-result>",
3849
+ "related": []
3850
+ },
3851
+ {
3852
+ "name": "GeoPageHeaderComponent",
3853
+ "selector": "geo-page-header",
3854
+ "category": "other",
3855
+ "summary": "GeoPageHeaderComponent",
3856
+ "whenToUse": "",
3857
+ "doNotUseWhen": "",
3858
+ "howTo": "",
3859
+ "tips": [],
3860
+ "binding": "none",
3861
+ "cva": false,
3862
+ "path": "projects/geo-ui/src/lib/figma/geo-page-header/geo-page-header.component.ts",
3863
+ "doc": "ai/components/geo-page-header.md",
3864
+ "inputs": [
3865
+ {
3866
+ "name": "title",
3867
+ "type": "string",
3868
+ "default": "''",
1367
3869
  "note": ""
1368
3870
  },
1369
3871
  {
1370
- "name": "enterPressed",
1371
- "type": "EventEmitter<void>",
3872
+ "name": "breadcrumb",
3873
+ "type": "GeoBreadcrumbItem[]",
3874
+ "default": "[]",
3875
+ "note": ""
3876
+ },
3877
+ {
3878
+ "name": "uppercase",
3879
+ "type": "boolean",
3880
+ "default": "true",
1372
3881
  "note": ""
1373
3882
  }
1374
3883
  ],
3884
+ "outputs": [],
1375
3885
  "examples": [
1376
3886
  {
1377
- "title": "Basic",
1378
- "lang": "html",
1379
- "code": "<geo-input label=\"Họ tên\" [required]=\"true\" [block]=\"true\" [(ngModel)]=\"name\"></geo-input>"
1380
- },
1381
- {
1382
- "title": "Full options",
1383
- "lang": "html",
1384
- "code": "<geo-input\n label=\"Mã hồ sơ\"\n placeholder=\"Nhập mã hồ sơ\"\n type=\"text\"\n prefixIcon=\"search\"\n [allowClear]=\"true\"\n [required]=\"true\"\n [block]=\"true\"\n [maxlength]=\"50\"\n [error]=\"codeError\"\n errorMessage=\"Mã không được để trống\"\n [(ngModel)]=\"code\"\n (enterPressed)=\"onSearch()\"\n (valueChange)=\"onCode($event)\"\n></geo-input>"
3887
+ "title": "Example",
3888
+ "lang": "html"
1385
3889
  }
1386
3890
  ],
1387
- "example": "<geo-input label=\"Họ tên\" [required]=\"true\" [block]=\"true\" [(ngModel)]=\"name\"></geo-input>",
1388
- "related": [
1389
- "geo-textarea",
1390
- "geo-select",
1391
- "geo-form-modal"
1392
- ]
3891
+ "example": "<geo-page-header></geo-page-header>",
3892
+ "related": []
1393
3893
  },
1394
3894
  {
1395
3895
  "name": "GeoPageTitleComponent",
@@ -1482,13 +3982,13 @@
1482
3982
  "name": "pageIndex",
1483
3983
  "type": "number",
1484
3984
  "default": "1",
1485
- "note": ""
3985
+ "note": "Two-way `model()` (supports banana binding)."
1486
3986
  },
1487
3987
  {
1488
3988
  "name": "pageSize",
1489
3989
  "type": "number",
1490
3990
  "default": "10",
1491
- "note": ""
3991
+ "note": "Two-way `model()` (supports banana binding)."
1492
3992
  },
1493
3993
  {
1494
3994
  "name": "total",
@@ -1527,18 +4027,7 @@
1527
4027
  "note": ""
1528
4028
  }
1529
4029
  ],
1530
- "outputs": [
1531
- {
1532
- "name": "pageIndexChange",
1533
- "type": "EventEmitter<number>",
1534
- "note": ""
1535
- },
1536
- {
1537
- "name": "pageSizeChange",
1538
- "type": "EventEmitter<number>",
1539
- "note": ""
1540
- }
1541
- ],
4030
+ "outputs": [],
1542
4031
  "examples": [
1543
4032
  {
1544
4033
  "title": "Basic",
@@ -1645,7 +4134,7 @@
1645
4134
  "outputs": [
1646
4135
  {
1647
4136
  "name": "valueChange",
1648
- "type": "EventEmitter<string | number | null>",
4137
+ "type": "OutputEmitterRef<string | number | null>",
1649
4138
  "note": ""
1650
4139
  }
1651
4140
  ],
@@ -1701,12 +4190,12 @@
1701
4190
  "outputs": [
1702
4191
  {
1703
4192
  "name": "edit",
1704
- "type": "EventEmitter<void>",
1705
- "note": "Action ưu tiên hiển thị khi có > 2 thao tác (mặc định: edit) */ @Input() primaryActionKey = 'edit'; @Output() actionClick = new EventEmitter<string>(); /** @deprecated Dùng `actionClick` với key `edit`"
4193
+ "type": "OutputEmitterRef<void>",
4194
+ "note": "Action ưu tiên hiển thị khi có > 2 thao tác (mặc định: edit) */ readonly primaryActionKey = input('edit'); readonly actionClick = output<string>(); /** @deprecated Dùng `actionClick` với key `edit`"
1706
4195
  },
1707
4196
  {
1708
4197
  "name": "more",
1709
- "type": "EventEmitter<void>",
4198
+ "type": "OutputEmitterRef<void>",
1710
4199
  "note": "@deprecated Dùng `actionClick` với key `more`"
1711
4200
  }
1712
4201
  ],
@@ -1821,15 +4310,15 @@
1821
4310
  },
1822
4311
  {
1823
4312
  "name": "width",
1824
- "type": "number | string",
1825
- "default": "",
4313
+ "type": "number | string | undefined",
4314
+ "default": "undefined",
1826
4315
  "note": ""
1827
4316
  }
1828
4317
  ],
1829
4318
  "outputs": [
1830
4319
  {
1831
4320
  "name": "valueChange",
1832
- "type": "EventEmitter<string | number | Array<string | number> | null>",
4321
+ "type": "OutputEmitterRef<string | number | Array<string | number> | null>",
1833
4322
  "note": ""
1834
4323
  }
1835
4324
  ],
@@ -1874,7 +4363,7 @@
1874
4363
  "name": "value",
1875
4364
  "type": "number",
1876
4365
  "default": "0",
1877
- "note": ""
4366
+ "note": "Two-way `model()` (supports banana binding)."
1878
4367
  },
1879
4368
  {
1880
4369
  "name": "min",
@@ -1902,18 +4391,12 @@
1902
4391
  },
1903
4392
  {
1904
4393
  "name": "tipFormatter",
1905
- "type": "(value: number)",
1906
- "default": "> string",
1907
- "note": ""
1908
- }
1909
- ],
1910
- "outputs": [
1911
- {
1912
- "name": "valueChange",
1913
- "type": "EventEmitter<number>",
4394
+ "type": "((value: number) => string) | undefined",
4395
+ "default": "undefined",
1914
4396
  "note": ""
1915
4397
  }
1916
4398
  ],
4399
+ "outputs": [],
1917
4400
  "examples": [
1918
4401
  {
1919
4402
  "title": "Basic",
@@ -1932,6 +4415,97 @@
1932
4415
  "geo-select"
1933
4416
  ]
1934
4417
  },
4418
+ {
4419
+ "name": "GeoStatCardComponent",
4420
+ "selector": "geo-stat-card",
4421
+ "category": "other",
4422
+ "summary": "GeoStatCardComponent",
4423
+ "whenToUse": "",
4424
+ "doNotUseWhen": "",
4425
+ "howTo": "",
4426
+ "tips": [],
4427
+ "binding": "none",
4428
+ "cva": false,
4429
+ "path": "projects/geo-ui/src/lib/figma/geo-stat-card/geo-stat-card.component.ts",
4430
+ "doc": "ai/components/geo-stat-card.md",
4431
+ "inputs": [
4432
+ {
4433
+ "name": "label",
4434
+ "type": "string",
4435
+ "default": "''",
4436
+ "note": ""
4437
+ },
4438
+ {
4439
+ "name": "value",
4440
+ "type": "string | number",
4441
+ "default": "''",
4442
+ "note": ""
4443
+ },
4444
+ {
4445
+ "name": "unit",
4446
+ "type": "string",
4447
+ "default": "''",
4448
+ "note": ""
4449
+ },
4450
+ {
4451
+ "name": "icon",
4452
+ "type": "string",
4453
+ "default": "'bar-chart'",
4454
+ "note": ""
4455
+ },
4456
+ {
4457
+ "name": "hint",
4458
+ "type": "string",
4459
+ "default": "''",
4460
+ "note": ""
4461
+ },
4462
+ {
4463
+ "name": "clickable",
4464
+ "type": "boolean",
4465
+ "default": "false",
4466
+ "note": ""
4467
+ },
4468
+ {
4469
+ "name": "animate",
4470
+ "type": "boolean",
4471
+ "default": "true",
4472
+ "note": "Count-up number animation. Honors `prefers-reduced-motion`."
4473
+ },
4474
+ {
4475
+ "name": "animationDuration",
4476
+ "type": "number",
4477
+ "default": "1000",
4478
+ "note": "Count-up duration in ms."
4479
+ },
4480
+ {
4481
+ "name": "animationDelay",
4482
+ "type": "number",
4483
+ "default": "0",
4484
+ "note": "Stagger delay before count-up starts (ms)."
4485
+ },
4486
+ {
4487
+ "name": "item",
4488
+ "type": "GeoStatCardItem | null",
4489
+ "default": "null",
4490
+ "note": "Convenience: bind a whole item object."
4491
+ }
4492
+ ],
4493
+ "outputs": [
4494
+ {
4495
+ "name": "clicked",
4496
+ "type": "OutputEmitterRef<void>",
4497
+ "note": ""
4498
+ }
4499
+ ],
4500
+ "examples": [
4501
+ {
4502
+ "title": "Example",
4503
+ "lang": "html"
4504
+ }
4505
+ ],
4506
+ "example": "<geo-stat-card></geo-stat-card>",
4507
+ "related": []
4508
+ },
1935
4509
  {
1936
4510
  "name": "GeoStatusTagComponent",
1937
4511
  "selector": "geo-status-tag",
@@ -1958,8 +4532,8 @@
1958
4532
  },
1959
4533
  {
1960
4534
  "name": "label",
1961
- "type": "string",
1962
- "default": "",
4535
+ "type": "string | undefined",
4536
+ "default": "undefined",
1963
4537
  "note": "Override label text."
1964
4538
  },
1965
4539
  {
@@ -2016,7 +4590,7 @@
2016
4590
  "name": "activeIndex",
2017
4591
  "type": "number",
2018
4592
  "default": "0",
2019
- "note": ""
4593
+ "note": "Two-way `model()` (supports banana binding)."
2020
4594
  },
2021
4595
  {
2022
4596
  "name": "title",
@@ -2110,34 +4684,29 @@
2110
4684
  }
2111
4685
  ],
2112
4686
  "outputs": [
2113
- {
2114
- "name": "activeIndexChange",
2115
- "type": "EventEmitter<number>",
2116
- "note": ""
2117
- },
2118
4687
  {
2119
4688
  "name": "stepSelect",
2120
- "type": "EventEmitter<{ index: number; step: GeoStepperStep }>",
4689
+ "type": "OutputEmitterRef<{ index: number; step: GeoStepperStep }>",
2121
4690
  "note": ""
2122
4691
  },
2123
4692
  {
2124
4693
  "name": "cancel",
2125
- "type": "EventEmitter<void>",
4694
+ "type": "OutputEmitterRef<void>",
2126
4695
  "note": ""
2127
4696
  },
2128
4697
  {
2129
4698
  "name": "previous",
2130
- "type": "EventEmitter<void>",
4699
+ "type": "OutputEmitterRef<void>",
2131
4700
  "note": ""
2132
4701
  },
2133
4702
  {
2134
4703
  "name": "save",
2135
- "type": "EventEmitter<void>",
4704
+ "type": "OutputEmitterRef<void>",
2136
4705
  "note": ""
2137
4706
  },
2138
4707
  {
2139
4708
  "name": "next",
2140
- "type": "EventEmitter<void>",
4709
+ "type": "OutputEmitterRef<void>",
2141
4710
  "note": ""
2142
4711
  }
2143
4712
  ],
@@ -2188,7 +4757,7 @@
2188
4757
  "name": "activeIndex",
2189
4758
  "type": "number",
2190
4759
  "default": "0",
2191
- "note": ""
4760
+ "note": "Two-way `model()` (supports banana binding)."
2192
4761
  },
2193
4762
  {
2194
4763
  "name": "orientation",
@@ -2204,14 +4773,9 @@
2204
4773
  }
2205
4774
  ],
2206
4775
  "outputs": [
2207
- {
2208
- "name": "activeIndexChange",
2209
- "type": "EventEmitter<number>",
2210
- "note": ""
2211
- },
2212
4776
  {
2213
4777
  "name": "stepSelect",
2214
- "type": "EventEmitter<{ index: number; step: GeoStepperStep }>",
4778
+ "type": "OutputEmitterRef<{ index: number; step: GeoStepperStep }>",
2215
4779
  "note": ""
2216
4780
  }
2217
4781
  ],
@@ -2322,18 +4886,18 @@
2322
4886
  "name": "pageIndex",
2323
4887
  "type": "number",
2324
4888
  "default": "1",
2325
- "note": ""
4889
+ "note": "Two-way `model()` (supports banana binding)."
2326
4890
  },
2327
4891
  {
2328
4892
  "name": "pageSize",
2329
4893
  "type": "number",
2330
4894
  "default": "10",
2331
- "note": ""
4895
+ "note": "Two-way `model()` (supports banana binding)."
2332
4896
  },
2333
4897
  {
2334
4898
  "name": "total",
2335
- "type": "number",
2336
- "default": "",
4899
+ "type": "number | undefined",
4900
+ "default": "undefined",
2337
4901
  "note": ""
2338
4902
  },
2339
4903
  {
@@ -2375,13 +4939,13 @@
2375
4939
  {
2376
4940
  "name": "scroll",
2377
4941
  "type": "{ x?: string; y?: string }",
2378
- "default": "{}",
4942
+ "default": "",
2379
4943
  "note": ""
2380
4944
  },
2381
4945
  {
2382
4946
  "name": "scrollY",
2383
- "type": "string",
2384
- "default": "",
4947
+ "type": "string | undefined",
4948
+ "default": "undefined",
2385
4949
  "note": ""
2386
4950
  },
2387
4951
  {
@@ -2392,14 +4956,14 @@
2392
4956
  },
2393
4957
  {
2394
4958
  "name": "tableTitle",
2395
- "type": "string",
2396
- "default": "",
4959
+ "type": "string | undefined",
4960
+ "default": "undefined",
2397
4961
  "note": ""
2398
4962
  },
2399
4963
  {
2400
4964
  "name": "footer",
2401
- "type": "string",
2402
- "default": "",
4965
+ "type": "string | undefined",
4966
+ "default": "undefined",
2403
4967
  "note": ""
2404
4968
  },
2405
4969
  {
@@ -2430,12 +4994,12 @@
2430
4994
  "name": "selectedKeys",
2431
4995
  "type": "string[]",
2432
4996
  "default": "[]",
2433
- "note": ""
4997
+ "note": "Two-way `model()` (supports banana binding)."
2434
4998
  },
2435
4999
  {
2436
5000
  "name": "mobileTitleKey",
2437
- "type": "string",
2438
- "default": "",
5001
+ "type": "string | undefined",
5002
+ "default": "undefined",
2439
5003
  "note": "Mobile card: key cột làm tiêu đề. Ưu tiên hơn `column.mobileTitle`; nếu không set thì lấy cột dữ liệu đầu tiên."
2440
5004
  },
2441
5005
  {
@@ -2448,52 +5012,37 @@
2448
5012
  "outputs": [
2449
5013
  {
2450
5014
  "name": "rowClick",
2451
- "type": "EventEmitter<Record<string, unknown>>",
5015
+ "type": "OutputEmitterRef<Record<string, unknown>>",
2452
5016
  "note": ""
2453
5017
  },
2454
5018
  {
2455
5019
  "name": "rowEdit",
2456
- "type": "EventEmitter<Record<string, unknown>>",
5020
+ "type": "OutputEmitterRef<Record<string, unknown>>",
2457
5021
  "note": ""
2458
5022
  },
2459
5023
  {
2460
5024
  "name": "rowMore",
2461
- "type": "EventEmitter<Record<string, unknown>>",
5025
+ "type": "OutputEmitterRef<Record<string, unknown>>",
2462
5026
  "note": ""
2463
5027
  },
2464
5028
  {
2465
5029
  "name": "rowAction",
2466
- "type": "EventEmitter<{ row: Record<string, unknown>; action: string }>",
2467
- "note": ""
2468
- },
2469
- {
2470
- "name": "pageIndexChange",
2471
- "type": "EventEmitter<number>",
2472
- "note": ""
2473
- },
2474
- {
2475
- "name": "pageSizeChange",
2476
- "type": "EventEmitter<number>",
5030
+ "type": "OutputEmitterRef<{ row: Record<string, unknown>; action: string }>",
2477
5031
  "note": ""
2478
5032
  },
2479
5033
  {
2480
5034
  "name": "queryParams",
2481
- "type": "EventEmitter<NzTableQueryParams>",
5035
+ "type": "OutputEmitterRef<NzTableQueryParams>",
2482
5036
  "note": ""
2483
5037
  },
2484
5038
  {
2485
5039
  "name": "currentPageDataChange",
2486
- "type": "EventEmitter<readonly Record<string, unknown>[]>",
2487
- "note": ""
2488
- },
2489
- {
2490
- "name": "selectedKeysChange",
2491
- "type": "EventEmitter<string[]>",
5040
+ "type": "OutputEmitterRef<readonly Record<string, unknown>[]>",
2492
5041
  "note": ""
2493
5042
  },
2494
5043
  {
2495
5044
  "name": "selectionChange",
2496
- "type": "EventEmitter<Record<string, unknown>[]>",
5045
+ "type": "OutputEmitterRef<Record<string, unknown>[]>",
2497
5046
  "note": ""
2498
5047
  }
2499
5048
  ],
@@ -2595,7 +5144,7 @@
2595
5144
  "name": "advancedExpanded",
2596
5145
  "type": "boolean",
2597
5146
  "default": "false",
2598
- "note": "Mở panel field nâng cao (`[advanced]`)."
5147
+ "note": "Mở panel field nâng cao (`[advanced]`). — Two-way `model()` (supports banana binding)."
2599
5148
  },
2600
5149
  {
2601
5150
  "name": "advancedFilterCount",
@@ -2619,17 +5168,12 @@
2619
5168
  "outputs": [
2620
5169
  {
2621
5170
  "name": "search",
2622
- "type": "EventEmitter<void>",
5171
+ "type": "OutputEmitterRef<void>",
2623
5172
  "note": ""
2624
5173
  },
2625
5174
  {
2626
5175
  "name": "reset",
2627
- "type": "EventEmitter<void>",
2628
- "note": ""
2629
- },
2630
- {
2631
- "name": "advancedExpandedChange",
2632
- "type": "EventEmitter<boolean>",
5176
+ "type": "OutputEmitterRef<void>",
2633
5177
  "note": ""
2634
5178
  }
2635
5179
  ],
@@ -2676,13 +5220,13 @@
2676
5220
  "name": "pageIndex",
2677
5221
  "type": "number",
2678
5222
  "default": "1",
2679
- "note": ""
5223
+ "note": "Two-way `model()` (supports banana binding)."
2680
5224
  },
2681
5225
  {
2682
5226
  "name": "pageSize",
2683
5227
  "type": "number",
2684
5228
  "default": "10",
2685
- "note": ""
5229
+ "note": "Two-way `model()` (supports banana binding)."
2686
5230
  },
2687
5231
  {
2688
5232
  "name": "total",
@@ -2721,18 +5265,7 @@
2721
5265
  "note": ""
2722
5266
  }
2723
5267
  ],
2724
- "outputs": [
2725
- {
2726
- "name": "pageIndexChange",
2727
- "type": "EventEmitter<number>",
2728
- "note": ""
2729
- },
2730
- {
2731
- "name": "pageSizeChange",
2732
- "type": "EventEmitter<number>",
2733
- "note": ""
2734
- }
2735
- ],
5268
+ "outputs": [],
2736
5269
  "examples": [
2737
5270
  {
2738
5271
  "title": "Basic",
@@ -2825,35 +5358,35 @@
2825
5358
  },
2826
5359
  {
2827
5360
  "name": "columnStorageKey",
2828
- "type": "string",
2829
- "default": "",
5361
+ "type": "string | undefined",
5362
+ "default": "undefined",
2830
5363
  "note": "Key lưu trạng thái ẩn/hiện cột trong sessionStorage"
2831
5364
  }
2832
5365
  ],
2833
5366
  "outputs": [
2834
5367
  {
2835
5368
  "name": "deleteClick",
2836
- "type": "EventEmitter<void>",
5369
+ "type": "OutputEmitterRef<void>",
2837
5370
  "note": ""
2838
5371
  },
2839
5372
  {
2840
5373
  "name": "exportClick",
2841
- "type": "EventEmitter<void>",
5374
+ "type": "OutputEmitterRef<void>",
2842
5375
  "note": ""
2843
5376
  },
2844
5377
  {
2845
5378
  "name": "toggleColumns",
2846
- "type": "EventEmitter<void>",
5379
+ "type": "OutputEmitterRef<void>",
2847
5380
  "note": ""
2848
5381
  },
2849
5382
  {
2850
5383
  "name": "columnApply",
2851
- "type": "EventEmitter<GeoColumnPickerApplyPayload>",
5384
+ "type": "OutputEmitterRef<GeoColumnPickerApplyPayload>",
2852
5385
  "note": ""
2853
5386
  },
2854
5387
  {
2855
5388
  "name": "addClick",
2856
- "type": "EventEmitter<void>",
5389
+ "type": "OutputEmitterRef<void>",
2857
5390
  "note": ""
2858
5391
  }
2859
5392
  ],
@@ -2916,13 +5449,13 @@
2916
5449
  "name": "selectedIndex",
2917
5450
  "type": "number",
2918
5451
  "default": "0",
2919
- "note": ""
5452
+ "note": "Two-way `model()` (supports banana binding)."
2920
5453
  },
2921
5454
  {
2922
5455
  "name": "selectedKey",
2923
- "type": "string",
2924
- "default": "",
2925
- "note": ""
5456
+ "type": "string | undefined",
5457
+ "default": "undefined",
5458
+ "note": "Two-way `model()` (supports banana binding)."
2926
5459
  },
2927
5460
  {
2928
5461
  "name": "centered",
@@ -2938,19 +5471,9 @@
2938
5471
  }
2939
5472
  ],
2940
5473
  "outputs": [
2941
- {
2942
- "name": "selectedIndexChange",
2943
- "type": "EventEmitter<number>",
2944
- "note": ""
2945
- },
2946
- {
2947
- "name": "selectedKeyChange",
2948
- "type": "EventEmitter<string>",
2949
- "note": ""
2950
- },
2951
5474
  {
2952
5475
  "name": "tabChange",
2953
- "type": "EventEmitter<{ index: number; key: string }>",
5476
+ "type": "OutputEmitterRef<{ index: number; key: string }>",
2954
5477
  "note": ""
2955
5478
  }
2956
5479
  ],
@@ -3034,8 +5557,8 @@
3034
5557
  },
3035
5558
  {
3036
5559
  "name": "maxlength",
3037
- "type": "number",
3038
- "default": "",
5560
+ "type": "number | undefined",
5561
+ "default": "undefined",
3039
5562
  "note": ""
3040
5563
  },
3041
5564
  {
@@ -3048,7 +5571,7 @@
3048
5571
  "outputs": [
3049
5572
  {
3050
5573
  "name": "valueChange",
3051
- "type": "EventEmitter<string>",
5574
+ "type": "OutputEmitterRef<string>",
3052
5575
  "note": ""
3053
5576
  }
3054
5577
  ],
@@ -3122,19 +5645,19 @@
3122
5645
  "name": "visible",
3123
5646
  "type": "boolean",
3124
5647
  "default": "true",
3125
- "note": ""
5648
+ "note": "Two-way `model()` (supports banana binding)."
3126
5649
  },
3127
5650
  {
3128
5651
  "name": "icon",
3129
- "type": "string",
3130
- "default": "",
5652
+ "type": "string | undefined",
5653
+ "default": "undefined",
3131
5654
  "note": "Override Ant Design icon type."
3132
5655
  }
3133
5656
  ],
3134
5657
  "outputs": [
3135
5658
  {
3136
5659
  "name": "closed",
3137
- "type": "EventEmitter<void>",
5660
+ "type": "OutputEmitterRef<void>",
3138
5661
  "note": ""
3139
5662
  }
3140
5663
  ],
@@ -3190,13 +5713,13 @@
3190
5713
  "name": "checkedKeys",
3191
5714
  "type": "Array<string | number>",
3192
5715
  "default": "[]",
3193
- "note": ""
5716
+ "note": "Two-way `model()` (supports banana binding)."
3194
5717
  },
3195
5718
  {
3196
5719
  "name": "expandedKeys",
3197
5720
  "type": "Array<string | number>",
3198
5721
  "default": "[]",
3199
- "note": ""
5722
+ "note": "Two-way `model()` (supports banana binding)."
3200
5723
  },
3201
5724
  {
3202
5725
  "name": "showLine",
@@ -3212,19 +5735,9 @@
3212
5735
  }
3213
5736
  ],
3214
5737
  "outputs": [
3215
- {
3216
- "name": "checkedKeysChange",
3217
- "type": "EventEmitter<Array<string | number>>",
3218
- "note": ""
3219
- },
3220
- {
3221
- "name": "expandedKeysChange",
3222
- "type": "EventEmitter<Array<string | number>>",
3223
- "note": ""
3224
- },
3225
5738
  {
3226
5739
  "name": "nodeClick",
3227
- "type": "EventEmitter<NzFormatEmitEvent>",
5740
+ "type": "OutputEmitterRef<NzFormatEmitEvent>",
3228
5741
  "note": ""
3229
5742
  }
3230
5743
  ],
@@ -3432,18 +5945,18 @@
3432
5945
  "name": "fileList",
3433
5946
  "type": "GeoUploadFile[]",
3434
5947
  "default": "[]",
3435
- "note": "Controlled file list."
5948
+ "note": "Controlled file list. — Two-way `model()` (supports banana binding)."
3436
5949
  },
3437
5950
  {
3438
5951
  "name": "headers",
3439
- "type": "{} | ((file: NzUploadFile) => {} | Observable<{}>)",
3440
- "default": "",
5952
+ "type": "{} | ((file: NzUploadFile) => {} | Observable<{}>) | undefined",
5953
+ "default": "undefined",
3441
5954
  "note": ""
3442
5955
  },
3443
5956
  {
3444
5957
  "name": "data",
3445
- "type": "{} | ((file: NzUploadFile) => {} | Observable<{}>)",
3446
- "default": "",
5958
+ "type": "{} | ((file: NzUploadFile) => {} | Observable<{}>) | undefined",
5959
+ "default": "undefined",
3447
5960
  "note": ""
3448
5961
  },
3449
5962
  {
@@ -3466,36 +5979,31 @@
3466
5979
  },
3467
5980
  {
3468
5981
  "name": "customRequest",
3469
- "type": "(item: NzUploadXHRArgs) => Subscription",
3470
- "default": "",
5982
+ "type": "GeoUploadCustomRequest | undefined",
5983
+ "default": "undefined",
3471
5984
  "note": "Custom XHR — mặc định simulate progress khi không có `action`."
3472
5985
  },
3473
5986
  {
3474
5987
  "name": "beforeUpload",
3475
- "type": "( file: NzUploadFile, fileList: NzUploadFile[] )",
3476
- "default": "> boolean | Observable<boolean>",
5988
+ "type": "((file: NzUploadFile, fileList: NzUploadFile[]) => boolean | Observable<boolean>) | undefined",
5989
+ "default": "undefined",
3477
5990
  "note": ""
3478
5991
  }
3479
5992
  ],
3480
5993
  "outputs": [
3481
- {
3482
- "name": "fileListChange",
3483
- "type": "EventEmitter<GeoUploadFile[]>",
3484
- "note": ""
3485
- },
3486
5994
  {
3487
5995
  "name": "change",
3488
- "type": "EventEmitter<NzUploadChangeParam>",
5996
+ "type": "OutputEmitterRef<NzUploadChangeParam>",
3489
5997
  "note": ""
3490
5998
  },
3491
5999
  {
3492
6000
  "name": "remove",
3493
- "type": "EventEmitter<GeoUploadFile>",
6001
+ "type": "OutputEmitterRef<GeoUploadFile>",
3494
6002
  "note": ""
3495
6003
  },
3496
6004
  {
3497
6005
  "name": "reject",
3498
- "type": "EventEmitter<{ file: File; reason: 'type' | 'size' }>",
6006
+ "type": "OutputEmitterRef<{ file: File; reason: 'type' | 'size' }>",
3499
6007
  "note": ""
3500
6008
  }
3501
6009
  ],