@geoit/ui 0.0.4 → 0.0.6

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 +94 -66
  3. package/ai/AGENTS.md +106 -16
  4. package/ai/README.md +35 -1
  5. package/ai/catalog.json +2855 -275
  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 +115 -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 +102 -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 +81 -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 +75 -0
  30. package/ai/components/geo-login.md +106 -0
  31. package/ai/components/geo-map-admin-filter.md +85 -0
  32. package/ai/components/geo-map-basemap-switcher.md +79 -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 +84 -0
  43. package/ai/components/geo-map-search.md +89 -0
  44. package/ai/components/geo-map-shell.md +146 -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 +81 -0
  48. package/ai/components/geo-map-zoom.md +74 -0
  49. package/ai/components/geo-map.md +212 -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 +6 -8
  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 +184 -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
@@ -0,0 +1,81 @@
1
+ # geo-forgot-password
2
+
3
+ > Complete usage reference for **GeoForgotPasswordComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
6
+
7
+ ## Summary
8
+ Forgot-password form (email + submit / back to login).
9
+
10
+ ## Import
11
+
12
+ ```ts
13
+ import { GeoForgotPasswordComponent } from '@geoit/ui';
14
+ ```
15
+
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoForgotPasswordComponent]
20
+ ```
21
+
22
+ ## Selector
23
+ `geo-forgot-password`
24
+
25
+ ## Category
26
+ `forms`
27
+
28
+ ## When to use
29
+ Password reset entry page.
30
+
31
+ ## Do not use when
32
+ Inside login card — navigate to a dedicated route.
33
+
34
+
35
+ ## Binding
36
+
37
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
38
+
39
+ ## Inputs
40
+
41
+ Every supported Input (do not invent others):
42
+
43
+ | Input | Type | Default | Description |
44
+ |-------|------|---------|-------------|
45
+ | `title` | `string` | `'Quên mật khẩu'` | — |
46
+ | `subtitle` | `string` | `'Nhập email đã đăng ký để nhận mật khẩu mới.'` | — |
47
+ | `loading` | `boolean` | `false` | — |
48
+ | `errorMessage` | `string` | `''` | — |
49
+ | `successMessage` | `string` | `''` | — |
50
+ | `email` | `string` | `''` | Two-way `model()` (supports banana binding). |
51
+
52
+ ## Outputs
53
+
54
+ | Output | Payload | Description |
55
+ |--------|---------|-------------|
56
+ | `submitEmail` | `OutputEmitterRef<string>` | — |
57
+ | `backToLogin` | `OutputEmitterRef<void>` | — |
58
+
59
+
60
+ ## Examples
61
+
62
+ ### Example
63
+
64
+ ```html
65
+ <geo-forgot-password
66
+ (submitEmail)="reset($event)"
67
+ (backToLogin)="goLogin()"
68
+ ></geo-forgot-password>
69
+ ```
70
+
71
+ ## Package path
72
+ `node_modules/@geoit/ui/ai/components/geo-forgot-password.md`
73
+
74
+ ## Source
75
+ `projects/geo-ui/src/lib/figma/geo-forgot-password/geo-forgot-password.component.ts`
76
+
77
+ ## Rules for AI / consumers
78
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
79
+ - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
80
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
81
+ - Copy examples and adapt labels/bindings only.
@@ -38,7 +38,7 @@ Modal form: header/footer cố định, body scroll qua ng-content. [open] + (op
38
38
 
39
39
  ## Binding
40
40
 
41
- Standalone presentational / container component — drive via Inputs and Outputs (no `ngModel` unless documented).
41
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
42
42
 
43
43
  ## Inputs
44
44
 
@@ -46,14 +46,14 @@ Every supported Input (do not invent others):
46
46
 
47
47
  | Input | Type | Default | Description |
48
48
  |-------|------|---------|-------------|
49
- | `open` | `boolean` | `false` | Tương đương `open` (antd) / `nzVisible` (ng-zorro). |
49
+ | `open` | `boolean` | `false` | Tương đương `open` (antd) / `nzVisible` (ng-zorro). — Two-way `model()` (supports banana binding). |
50
50
  | `title` | `string` | `''` | — |
51
51
  | `titleUppercase` | `boolean` | `true` | Title chữ in hoa. Default `true` theo design. |
52
52
  | `okText` | `string` | `'Lưu'` | — |
53
53
  | `cancelText` | `string` | `'Hủy'` | — |
54
- | `cancelIcon` | `string` | | Icon nút cancel (vd. `left` cho Quay lại). |
54
+ | `cancelIcon` | `string \| undefined` | `undefined` | Icon nút cancel (vd. `left` cho Quay lại). |
55
55
  | `cancelIconPlacement` | `'start' \| 'end'` | `'start'` | — |
56
- | `okIcon` | `string` | | Icon nút OK (vd. `right` cho Tiếp theo). |
56
+ | `okIcon` | `string \| undefined` | `undefined` | Icon nút OK (vd. `right` cho Tiếp theo). |
57
57
  | `okIconPlacement` | `'start' \| 'end'` | `'end'` | — |
58
58
  | `secondaryOkText` | `string` | `''` | Nút phụ (vd. Lưu và khởi tạo lại). Chỉ hiện khi có text và không readonly. |
59
59
  | `confirmLoading` | `boolean` | `false` | Loading trên nút OK — giống antd `confirmLoading` / nz `nzOkLoading`. |
@@ -75,12 +75,11 @@ Every supported Input (do not invent others):
75
75
 
76
76
  | Output | Payload | Description |
77
77
  |--------|---------|-------------|
78
- | `openChange` | `EventEmitter<boolean>` | — |
79
- | `ok` | `EventEmitter<void>` | — |
80
- | `secondaryOk` | `EventEmitter<void>` | — |
81
- | `cancel` | `EventEmitter<void>` | — |
82
- | `afterOpen` | `EventEmitter<void>` | — |
83
- | `afterClose` | `EventEmitter<void>` | — |
78
+ | `ok` | `OutputEmitterRef<void>` | — |
79
+ | `secondaryOk` | `OutputEmitterRef<void>` | — |
80
+ | `cancel` | `OutputEmitterRef<void>` | — |
81
+ | `afterOpen` | `OutputEmitterRef<void>` | — |
82
+ | `afterClose` | `OutputEmitterRef<void>` | — |
84
83
 
85
84
 
86
85
  ## Examples
@@ -37,7 +37,7 @@ Wrapper icon Ant Design. Bắt buộc [type]; size xs|sm|md|lg|xl hoặc px; col
37
37
 
38
38
  ## Binding
39
39
 
40
- Standalone presentational / container component — drive via Inputs and Outputs (no `ngModel` unless documented).
40
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
41
41
 
42
42
  ## Inputs
43
43
 
@@ -45,11 +45,11 @@ Every supported Input (do not invent others):
45
45
 
46
46
  | Input | Type | Default | Description |
47
47
  |-------|------|---------|-------------|
48
- | `type` | | — | Tên icon Ant Design (vd. `close`, `search`, `appstore`). |
48
+ | `type` | `string` | — | Tên icon Ant Design (vd. `close`, `search`, `appstore`). |
49
49
  | `theme` | `'outline' \| 'fill' \| 'twotone'` | `'outline'` | — |
50
50
  | `spin` | `boolean` | `false` | — |
51
51
  | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| number \| string` | `'md'` | xs \| sm \| md \| lg \| xl \| number(px) \| CSS size string |
52
- | `color` | `string` | | CSS color — ưu tiên design token, vd. `var(--geo-color-primary-default)` |
52
+ | `color` | `string \| undefined` | `undefined` | CSS color — ưu tiên design token, vd. `var(--geo-color-primary-default)` |
53
53
 
54
54
  ## Outputs
55
55
 
@@ -48,6 +48,8 @@ Supports **ControlValueAccessor**.
48
48
 
49
49
  Also import `FormsModule` (template-driven) or `ReactiveFormsModule`.
50
50
 
51
+ Library API uses Angular 18 `input()` / `output()` signals under the hood.
52
+
51
53
  ## Inputs
52
54
 
53
55
  Every supported Input (do not invent others):
@@ -62,19 +64,19 @@ Every supported Input (do not invent others):
62
64
  | `required` | `boolean` | `false` | — |
63
65
  | `error` | `boolean` | `false` | — |
64
66
  | `errorMessage` | `string` | `''` | — |
65
- | `maxlength` | `number` | | — |
66
- | `prefixIcon` | `string` | | — |
67
- | `suffixIcon` | `string` | | — |
67
+ | `maxlength` | `number \| undefined` | `undefined` | — |
68
+ | `prefixIcon` | `string \| undefined` | `undefined` | — |
69
+ | `suffixIcon` | `string \| undefined` | `undefined` | — |
68
70
  | `allowClear` | `boolean` | `false` | — |
69
71
  | `block` | `boolean` | `false` | — |
70
- | `width` | `number \| string` | | — |
72
+ | `width` | `number \| string \| undefined` | `undefined` | — |
71
73
 
72
74
  ## Outputs
73
75
 
74
76
  | Output | Payload | Description |
75
77
  |--------|---------|-------------|
76
- | `valueChange` | `EventEmitter<string>` | — |
77
- | `enterPressed` | `EventEmitter<void>` | — |
78
+ | `valueChange` | `OutputEmitterRef<string>` | — |
79
+ | `enterPressed` | `OutputEmitterRef<void>` | — |
78
80
 
79
81
 
80
82
  ## Examples
@@ -0,0 +1,70 @@
1
+ # geo-layout-footer
2
+
3
+ > Complete usage reference for **GeoLayoutFooterComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
6
+
7
+ ## Summary
8
+ Minimal layout footer with copyright text + content slot.
9
+
10
+ ## Import
11
+
12
+ ```ts
13
+ import { GeoLayoutFooterComponent } from '@geoit/ui';
14
+ ```
15
+
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoLayoutFooterComponent]
20
+ ```
21
+
22
+ ## Selector
23
+ `geo-layout-footer`
24
+
25
+ ## Category
26
+ `layout`
27
+
28
+ ## When to use
29
+ Bottom chrome inside geo-layout or custom shells.
30
+
31
+ ## Do not use when
32
+ Marketing page footers with heavy links/nav.
33
+
34
+
35
+ ## Binding
36
+
37
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
38
+
39
+ ## Inputs
40
+
41
+ Every supported Input (do not invent others):
42
+
43
+ | Input | Type | Default | Description |
44
+ |-------|------|---------|-------------|
45
+ | `text` | `string` | `'© VNPT \| Hệ thống thông tin đất đai iLIS'` | Copyright / status text. Empty = use default. |
46
+
47
+ ## Outputs
48
+
49
+ _None_
50
+
51
+
52
+ ## Examples
53
+
54
+ ### Example
55
+
56
+ ```html
57
+ <geo-layout-footer text="© VNPT | iLIS"></geo-layout-footer>
58
+ ```
59
+
60
+ ## Package path
61
+ `node_modules/@geoit/ui/ai/components/geo-layout-footer.md`
62
+
63
+ ## Source
64
+ `projects/geo-ui/src/lib/figma/geo-layout/footer/geo-layout-footer.component.ts`
65
+
66
+ ## Rules for AI / consumers
67
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
68
+ - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
69
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
70
+ - Copy examples and adapt labels/bindings only.
@@ -0,0 +1,82 @@
1
+ # geo-layout-header-actions
2
+
3
+ > Complete usage reference for **GeoLayoutHeaderActionsComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
6
+
7
+ ## Summary
8
+ Header actions: notification/subsystem icons + user chip with popovers.
9
+
10
+ ## Import
11
+
12
+ ```ts
13
+ import { GeoLayoutHeaderActionsComponent } from '@geoit/ui';
14
+ ```
15
+
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoLayoutHeaderActionsComponent]
20
+ ```
21
+
22
+ ## Selector
23
+ `geo-layout-header-actions`
24
+
25
+ ## Category
26
+ `layout`
27
+
28
+ ## When to use
29
+ Standalone header toolbar, or default actions inside geo-layout-header.
30
+
31
+ ## Do not use when
32
+ Full app chrome — prefer wrapping with geo-layout.
33
+
34
+
35
+ ## Binding
36
+
37
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
38
+
39
+ ## Inputs
40
+
41
+ Every supported Input (do not invent others):
42
+
43
+ | Input | Type | Default | Description |
44
+ |-------|------|---------|-------------|
45
+ | `user` | `GeoLayoutUserInfo` | `GEO_LAYOUT_DEFAULT_USER` | — |
46
+ | `notifications` | `GeoLayoutNotificationItem[]` | `GEO_LAYOUT_DEFAULT_NOTIFICATIONS` | — |
47
+ | `subsystems` | `GeoLayoutSubsystemItem[]` | `GEO_LAYOUT_DEFAULT_SUBSYSTEMS` | — |
48
+ | `userMenuItems` | `GeoLayoutUserMenuItem[]` | `GEO_LAYOUT_DEFAULT_USER_MENU` | — |
49
+ | `compact` | `boolean` | `false` | Ẩn tên/email trên chip (mobile). |
50
+
51
+ ## Outputs
52
+
53
+ | Output | Payload | Description |
54
+ |--------|---------|-------------|
55
+ | `notificationClick` | `OutputEmitterRef<GeoLayoutNotificationItem>` | — |
56
+ | `subsystemClick` | `OutputEmitterRef<GeoLayoutSubsystemItem>` | — |
57
+ | `userMenuClick` | `OutputEmitterRef<GeoLayoutUserMenuItem>` | — |
58
+ | `logout` | `OutputEmitterRef<void>` | — |
59
+
60
+
61
+ ## Examples
62
+
63
+ ### Example
64
+
65
+ ```html
66
+ <geo-layout-header-actions
67
+ [user]="{ name: 'vnpt', email: 'vnpt@vnpt.vn' }"
68
+ (logout)="onLogout()"
69
+ ></geo-layout-header-actions>
70
+ ```
71
+
72
+ ## Package path
73
+ `node_modules/@geoit/ui/ai/components/geo-layout-header-actions.md`
74
+
75
+ ## Source
76
+ `projects/geo-ui/src/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.ts`
77
+
78
+ ## Rules for AI / consumers
79
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
80
+ - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
81
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
82
+ - Copy examples and adapt labels/bindings only.
@@ -0,0 +1,89 @@
1
+ # geo-layout-header
2
+
3
+ > Complete usage reference for **GeoLayoutHeaderComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
6
+
7
+ ## Summary
8
+ Soft top bar: toggle + breadcrumb + user/notification actions.
9
+
10
+ ## Import
11
+
12
+ ```ts
13
+ import { GeoLayoutHeaderComponent } from '@geoit/ui';
14
+ ```
15
+
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoLayoutHeaderComponent]
20
+ ```
21
+
22
+ ## Selector
23
+ `geo-layout-header`
24
+
25
+ ## Category
26
+ `layout`
27
+
28
+ ## When to use
29
+ Standalone top bar, or inside geo-layout.
30
+
31
+ ## Do not use when
32
+ Full app chrome — use geo-layout.
33
+
34
+
35
+ ## Binding
36
+
37
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
38
+
39
+ ## Inputs
40
+
41
+ Every supported Input (do not invent others):
42
+
43
+ | Input | Type | Default | Description |
44
+ |-------|------|---------|-------------|
45
+ | `breadcrumbs` | `GeoBreadcrumbItem[]` | `[]` | — |
46
+ | `fallbackBreadcrumb` | `string` | `'Hệ thống thông tin đất đai - VNPT iLIS'` | — |
47
+ | `expanded` | `boolean` | `true` | — |
48
+ | `isMobile` | `boolean` | `false` | — |
49
+ | `mobileMenuOpen` | `boolean` | `false` | — |
50
+ | `showDefaultActions` | `boolean` | `true` | — |
51
+ | `user` | `GeoLayoutUserInfo` | `GEO_LAYOUT_DEFAULT_USER` | — |
52
+ | `notifications` | `GeoLayoutNotificationItem[]` | `GEO_LAYOUT_DEFAULT_NOTIFICATIONS` | — |
53
+ | `subsystems` | `GeoLayoutSubsystemItem[]` | `GEO_LAYOUT_DEFAULT_SUBSYSTEMS` | — |
54
+ | `userMenuItems` | `GeoLayoutUserMenuItem[]` | `GEO_LAYOUT_DEFAULT_USER_MENU` | — |
55
+
56
+ ## Outputs
57
+
58
+ | Output | Payload | Description |
59
+ |--------|---------|-------------|
60
+ | `sidebarToggle` | `OutputEmitterRef<void>` | — |
61
+ | `notificationClick` | `OutputEmitterRef<GeoLayoutNotificationItem>` | — |
62
+ | `subsystemClick` | `OutputEmitterRef<GeoLayoutSubsystemItem>` | — |
63
+ | `userMenuClick` | `OutputEmitterRef<GeoLayoutUserMenuItem>` | — |
64
+ | `logout` | `OutputEmitterRef<void>` | — |
65
+
66
+
67
+ ## Examples
68
+
69
+ ### Example
70
+
71
+ ```html
72
+ <geo-layout-header
73
+ [breadcrumbs]="crumbs"
74
+ [user]="{ name: 'vnpt', email: 'vnpt@vnpt.vn' }"
75
+ (sidebarToggle)="toggle()"
76
+ ></geo-layout-header>
77
+ ```
78
+
79
+ ## Package path
80
+ `node_modules/@geoit/ui/ai/components/geo-layout-header.md`
81
+
82
+ ## Source
83
+ `projects/geo-ui/src/lib/figma/geo-layout/header/geo-layout-header.component.ts`
84
+
85
+ ## Rules for AI / consumers
86
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
87
+ - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
88
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
89
+ - Copy examples and adapt labels/bindings only.
@@ -0,0 +1,86 @@
1
+ # geo-layout-sidebar
2
+
3
+ > Complete usage reference for **GeoLayoutSidebarComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
6
+
7
+ ## Summary
8
+ White sidebar: brand + recursive menu (collapse / mobile drawer).
9
+
10
+ ## Import
11
+
12
+ ```ts
13
+ import { GeoLayoutSidebarComponent } from '@geoit/ui';
14
+ ```
15
+
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoLayoutSidebarComponent]
20
+ ```
21
+
22
+ ## Selector
23
+ `geo-layout-sidebar`
24
+
25
+ ## Category
26
+ `layout`
27
+
28
+ ## When to use
29
+ Standalone nav rail, or inside geo-layout.
30
+
31
+ ## Do not use when
32
+ Full app chrome — use geo-layout.
33
+
34
+
35
+ ## Binding
36
+
37
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
38
+
39
+ ## Inputs
40
+
41
+ Every supported Input (do not invent others):
42
+
43
+ | Input | Type | Default | Description |
44
+ |-------|------|---------|-------------|
45
+ | `menuItems` | `GeoLayoutMenuItem[]` | `[]` | — |
46
+ | `brandTitle` | `string` | `'iLIS'` | — |
47
+ | `logoSrc` | `string` | `''` | — |
48
+ | `logoAlt` | `string` | `'Logo'` | — |
49
+ | `sidebarBackgroundSrc` | `string` | `''` | — |
50
+ | `selectedKey` | `string \| null` | `null` | Two-way `model()` (supports banana binding). |
51
+ | `collapsed` | `boolean` | `false` | — |
52
+ | `isMobile` | `boolean` | `false` | — |
53
+ | `mobileOpen` | `boolean` | `false` | — |
54
+ | `width` | `GeoLayoutSiderWidth` | `280` | — |
55
+ | `collapsedWidth` | `GeoLayoutSiderWidth` | `80` | — |
56
+
57
+ ## Outputs
58
+
59
+ | Output | Payload | Description |
60
+ |--------|---------|-------------|
61
+ | `menuSelect` | `OutputEmitterRef<GeoLayoutMenuItem>` | — |
62
+
63
+
64
+ ## Examples
65
+
66
+ ### Example
67
+
68
+ ```html
69
+ <geo-layout-sidebar
70
+ [menuItems]="menu"
71
+ [(selectedKey)]="active"
72
+ [collapsed]="false"
73
+ ></geo-layout-sidebar>
74
+ ```
75
+
76
+ ## Package path
77
+ `node_modules/@geoit/ui/ai/components/geo-layout-sidebar.md`
78
+
79
+ ## Source
80
+ `projects/geo-ui/src/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.ts`
81
+
82
+ ## Rules for AI / consumers
83
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
84
+ - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
85
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
86
+ - Copy examples and adapt labels/bindings only.
@@ -0,0 +1,155 @@
1
+ # geo-layout
2
+
3
+ > Complete usage reference for **GeoLayoutComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
6
+
7
+ ## Summary
8
+ App shell composing sidebar + header + content + footer.
9
+
10
+ ## Import
11
+
12
+ ```ts
13
+ import { GeoLayoutComponent } from '@geoit/ui';
14
+ ```
15
+
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoLayoutComponent]
20
+ ```
21
+
22
+ ## Selector
23
+ `geo-layout`
24
+
25
+ ## Category
26
+ `layout`
27
+
28
+ ## When to use
29
+ Host application chrome mirroring layout/feature MainLayout.
30
+
31
+ ## Do not use when
32
+ In-page wizards — use geo-step-form-layout; dialogs — use geo-form-modal.
33
+
34
+
35
+ ## Binding
36
+
37
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
38
+
39
+ ## Inputs
40
+
41
+ Every supported Input (do not invent others):
42
+
43
+ | Input | Type | Default | Description |
44
+ |-------|------|---------|-------------|
45
+ | `menuItems` | `GeoLayoutMenuItem[]` | `[]` | — |
46
+ | `brandTitle` | `string` | `'iLIS'` | — |
47
+ | `logoSrc` | `string` | `''` | — |
48
+ | `logoAlt` | `string` | `'Logo'` | — |
49
+ | `sidebarBackgroundSrc` | `string` | `''` | — |
50
+ | `breadcrumbs` | `GeoBreadcrumbItem[]` | `[]` | — |
51
+ | `fallbackBreadcrumb` | `string` | `'Hệ thống thông tin đất đai - VNPT iLIS'` | — |
52
+ | `expanded` | `boolean` | `true` | Two-way `model()` (supports banana binding). |
53
+ | `isMobile` | `boolean` | `false` | — |
54
+ | `mobileMenuOpen` | `boolean` | `false` | Two-way `model()` (supports banana binding). |
55
+ | `selectedKey` | `string \| null` | `null` | Two-way `model()` (supports banana binding). |
56
+ | `siderWidth` | `number \| string` | `280` | — |
57
+ | `siderCollapsedWidth` | `number \| string` | `80` | — |
58
+ | `showDefaultActions` | `boolean` | `true` | — |
59
+ | `showFooter` | `boolean` | `true` | — |
60
+ | `footerText` | `string` | `'© VNPT \| Hệ thống thông tin đất đai iLIS'` | — |
61
+ | `user` | `GeoLayoutUserInfo` | `GEO_LAYOUT_DEFAULT_USER` | — |
62
+ | `notifications` | `GeoLayoutNotificationItem[]` | `GEO_LAYOUT_DEFAULT_NOTIFICATIONS` | — |
63
+ | `subsystems` | `GeoLayoutSubsystemItem[]` | `GEO_LAYOUT_DEFAULT_SUBSYSTEMS` | — |
64
+ | `userMenuItems` | `GeoLayoutUserMenuItem[]` | `GEO_LAYOUT_DEFAULT_USER_MENU` | — |
65
+
66
+ ## Outputs
67
+
68
+ | Output | Payload | Description |
69
+ |--------|---------|-------------|
70
+ | `menuSelect` | `OutputEmitterRef<GeoLayoutMenuItem>` | — |
71
+ | `sidebarToggle` | `OutputEmitterRef<void>` | — |
72
+ | `notificationClick` | `OutputEmitterRef<GeoLayoutNotificationItem>` | — |
73
+ | `subsystemClick` | `OutputEmitterRef<GeoLayoutSubsystemItem>` | — |
74
+ | `userMenuClick` | `OutputEmitterRef<GeoLayoutUserMenuItem>` | — |
75
+ | `logout` | `OutputEmitterRef<void>` | — |
76
+
77
+ ## Related types
78
+
79
+ From `figma/geo-layout/geo-layout.types.ts`:
80
+
81
+ ```ts
82
+ export interface GeoLayoutMenuItem {
83
+ /** Stable id used for selection / open state. */
84
+ key: string;
85
+ /** Display label. */
86
+ title: string;
87
+ /** Optional `geo-icon` / Ant Design icon type. */
88
+ icon?: string;
89
+ /** Optional route / href hint for consumers (Storybook clicks use `menuSelect`). */
90
+ link?: string;
91
+ children?: GeoLayoutMenuItem[];
92
+ }
93
+
94
+ export interface GeoLayoutUserInfo {
95
+ name: string;
96
+ email?: string;
97
+ /** Optional avatar URL; initials used when empty. */
98
+ avatarUrl?: string;
99
+ role?: string;
100
+ }
101
+
102
+ export interface GeoLayoutNotificationItem {
103
+ id: string;
104
+ message: string;
105
+ time: string;
106
+ read?: boolean;
107
+ icon?: string;
108
+ }
109
+
110
+ export interface GeoLayoutSubsystemItem {
111
+ id: string;
112
+ label: string;
113
+ initials: string;
114
+ url?: string;
115
+ }
116
+
117
+ export interface GeoLayoutUserMenuItem {
118
+ key: string;
119
+ label: string;
120
+ icon: string;
121
+ danger?: boolean;
122
+ }
123
+
124
+ export type GeoLayoutSiderWidth = number | string;
125
+ ```
126
+
127
+ ## Examples
128
+
129
+ ### Example
130
+
131
+ ```html
132
+ <geo-layout
133
+ [menuItems]="menu"
134
+ [(expanded)]="expanded"
135
+ [breadcrumbs]="crumbs"
136
+ [(selectedKey)]="active"
137
+ [user]="{ name: 'vnpt', email: 'vnpt@vnpt.vn' }"
138
+ (menuSelect)="onNav($event)"
139
+ (logout)="onLogout()"
140
+ >
141
+ <router-outlet />
142
+ </geo-layout>
143
+ ```
144
+
145
+ ## Package path
146
+ `node_modules/@geoit/ui/ai/components/geo-layout.md`
147
+
148
+ ## Source
149
+ `projects/geo-ui/src/lib/figma/geo-layout/geo-layout.component.ts`
150
+
151
+ ## Rules for AI / consumers
152
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
153
+ - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
154
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
155
+ - Copy examples and adapt labels/bindings only.