@geoit/ui 0.0.2 → 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 +140 -17
  3. package/ai/AGENTS.md +43 -32
  4. package/ai/README.md +36 -2
  5. package/ai/catalog.json +5585 -437
  6. package/ai/components/geo-alert.md +75 -21
  7. package/ai/components/geo-back-button.md +64 -18
  8. package/ai/components/geo-breadcrumb.md +71 -12
  9. package/ai/components/geo-button.md +90 -27
  10. package/ai/components/geo-chart.md +103 -0
  11. package/ai/components/geo-checkbox.md +67 -20
  12. package/ai/components/geo-column-picker.md +91 -18
  13. package/ai/components/geo-confirm-modal.md +92 -27
  14. package/ai/components/geo-dashboard.md +91 -0
  15. package/ai/components/geo-date-picker.md +105 -29
  16. package/ai/components/geo-date-range-picker.md +101 -28
  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 +99 -26
  20. package/ai/components/geo-forgot-password.md +78 -0
  21. package/ai/components/geo-form-modal.md +111 -44
  22. package/ai/components/geo-icon.md +70 -16
  23. package/ai/components/geo-input.md +94 -29
  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 +62 -16
  53. package/ai/components/geo-pagination.md +76 -24
  54. package/ai/components/geo-radio.md +110 -27
  55. package/ai/components/geo-row-actions.md +87 -19
  56. package/ai/components/geo-select.md +108 -28
  57. package/ai/components/geo-slider.md +70 -21
  58. package/ai/components/geo-stat-card.md +98 -0
  59. package/ai/components/geo-status-tag.md +67 -15
  60. package/ai/components/geo-step-form-layout.md +121 -38
  61. package/ai/components/geo-stepper.md +81 -19
  62. package/ai/components/geo-table-filter.md +90 -29
  63. package/ai/components/geo-table-pagination.md +70 -23
  64. package/ai/components/geo-table-toolbar.md +84 -29
  65. package/ai/components/geo-table.md +191 -59
  66. package/ai/components/geo-tabs.md +99 -27
  67. package/ai/components/geo-textarea.md +84 -23
  68. package/ai/components/geo-toast.md +138 -27
  69. package/ai/components/geo-tree.md +94 -22
  70. package/ai/components/geo-typography.md +70 -19
  71. package/ai/components/geo-upload.md +109 -39
  72. package/ai/mockup.html +1194 -0
  73. package/ai/recipes.md +132 -47
  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
@@ -1,16 +1,24 @@
1
1
  # geo-form-modal
2
2
 
3
- > AI quick reference for **GeoFormModalComponent**
3
+ > Complete usage reference for **GeoFormModalComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Form modal: fixed header/footer, scrollable body via ng-content.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoFormModalComponent } from '@geoit/ui';
14
+ import { FormsModule } from '@angular/forms'; // when using [(ngModel)]
11
15
  ```
12
16
 
13
- Standalone component — add to `imports: [GeoFormModalComponent]` of the consuming standalone component/module.
17
+ Add to the consuming standalone component:
18
+
19
+ ```ts
20
+ imports: [GeoFormModalComponent, FormsModule]
21
+ ```
14
22
 
15
23
  ## Selector
16
24
  `geo-form-modal`
@@ -24,45 +32,60 @@ Create/edit dialogs; compose geo-stepper inside body for multi-step.
24
32
  ## Do not use when
25
33
  Full-page wizards — use geo-step-form-layout.
26
34
 
35
+ ## How to use
36
+
37
+ 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.
38
+
39
+ ## Binding
40
+
41
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
42
+
27
43
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `open` | See component TS / Storybook Controls |
31
- | `title` | See component TS / Storybook Controls |
32
- | `titleUppercase` | See component TS / Storybook Controls |
33
- | `okText` | See component TS / Storybook Controls |
34
- | `cancelText` | See component TS / Storybook Controls |
35
- | `cancelIcon` | See component TS / Storybook Controls |
36
- | `cancelIconPlacement` | See component TS / Storybook Controls |
37
- | `okIcon` | See component TS / Storybook Controls |
38
- | `okIconPlacement` | See component TS / Storybook Controls |
39
- | `secondaryOkText` | See component TS / Storybook Controls |
40
- | `confirmLoading` | See component TS / Storybook Controls |
41
- | `okDisabled` | See component TS / Storybook Controls |
42
- | `readonly` | See component TS / Storybook Controls |
43
- | `width` | See component TS / Storybook Controls |
44
- | `closable` | See component TS / Storybook Controls |
45
- | `mask` | See component TS / Storybook Controls |
46
- | `maskClosable` | See component TS / Storybook Controls |
47
- | `keyboard` | See component TS / Storybook Controls |
48
- | `centered` | See component TS / Storybook Controls |
49
- | `zIndex` | See component TS / Storybook Controls |
50
- | `className` | See component TS / Storybook Controls |
51
- | `wrapClassName` | See component TS / Storybook Controls |
52
- | `bodyScroll` | See component TS / Storybook Controls |
53
- | `bodyMaxHeight` | See component TS / Storybook Controls |
44
+
45
+ Every supported Input (do not invent others):
46
+
47
+ | Input | Type | Default | Description |
48
+ |-------|------|---------|-------------|
49
+ | `open` | `boolean` | `false` | Tương đương `open` (antd) / `nzVisible` (ng-zorro). — Two-way `model()` (supports banana binding). |
50
+ | `title` | `string` | `''` | |
51
+ | `titleUppercase` | `boolean` | `true` | Title chữ in hoa. Default `true` theo design. |
52
+ | `okText` | `string` | `'Lưu'` | |
53
+ | `cancelText` | `string` | `'Hủy'` | |
54
+ | `cancelIcon` | `string \| undefined` | `undefined` | Icon nút cancel (vd. `left` cho Quay lại). |
55
+ | `cancelIconPlacement` | `'start' \| 'end'` | `'start'` | |
56
+ | `okIcon` | `string \| undefined` | `undefined` | Icon nút OK (vd. `right` cho Tiếp theo). |
57
+ | `okIconPlacement` | `'start' \| 'end'` | `'end'` | |
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
+ | `confirmLoading` | `boolean` | `false` | Loading trên nút OK — giống antd `confirmLoading` / nz `nzOkLoading`. |
60
+ | `okDisabled` | `boolean` | `false` | Disable nút OK — giống antd `okButtonProps.disabled` / nz `nzOkDisabled`. |
61
+ | `readonly` | `boolean` | `false` | Ẩn nút OK (xem chi tiết). |
62
+ | `width` | `number \| string` | `720` | |
63
+ | `closable` | `boolean` | `true` | |
64
+ | `mask` | `boolean` | `true` | |
65
+ | `maskClosable` | `boolean` | `false` | |
66
+ | `keyboard` | `boolean` | `true` | |
67
+ | `centered` | `boolean` | `true` | |
68
+ | `zIndex` | `number` | `1000` | |
69
+ | `className` | `string` | `''` | |
70
+ | `wrapClassName` | `string` | `''` | — |
71
+ | `bodyScroll` | `boolean` | `true` | Body cuộn, header/footer cố định. |
72
+ | `bodyMaxHeight` | `string \| number` | `'60vh'` | Max-height của vùng body khi `bodyScroll` (vd `'60vh'`, `400`). |
54
73
 
55
74
  ## Outputs
56
- | Output | Notes |
57
- |--------|-------|
58
- | `openChange` | EventEmitter |
59
- | `ok` | EventEmitter |
60
- | `secondaryOk` | EventEmitter |
61
- | `cancel` | EventEmitter |
62
- | `afterOpen` | EventEmitter |
63
- | `afterClose` | EventEmitter |
64
-
65
- ## Example
75
+
76
+ | Output | Payload | Description |
77
+ |--------|---------|-------------|
78
+ | `ok` | `OutputEmitterRef<void>` | — |
79
+ | `secondaryOk` | `OutputEmitterRef<void>` | — |
80
+ | `cancel` | `OutputEmitterRef<void>` | — |
81
+ | `afterOpen` | `OutputEmitterRef<void>` | — |
82
+ | `afterClose` | `OutputEmitterRef<void>` | — |
83
+
84
+
85
+ ## Examples
86
+
87
+ ### Basic
88
+
66
89
  ```html
67
90
  <geo-form-modal
68
91
  [open]="open"
@@ -76,13 +99,57 @@ Full-page wizards — use geo-step-form-layout.
76
99
  </geo-form-modal>
77
100
  ```
78
101
 
102
+ ### Full options
103
+
104
+ ```html
105
+ <geo-form-modal
106
+ [open]="open"
107
+ title="Lập phiếu đăng ký"
108
+ [titleUppercase]="true"
109
+ cancelText="Hủy bỏ"
110
+ okText="Lưu"
111
+ okIcon="right"
112
+ okIconPlacement="end"
113
+ [confirmLoading]="saving"
114
+ [okDisabled]="!valid"
115
+ [width]="720"
116
+ [closable]="true"
117
+ [mask]="true"
118
+ [maskClosable]="false"
119
+ [centered]="true"
120
+ [bodyScroll]="true"
121
+ bodyMaxHeight="60vh"
122
+ (openChange)="open = $event"
123
+ (ok)="onSave()"
124
+ (cancel)="open = false"
125
+ >
126
+ <div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;">
127
+ <geo-input label="Mã" [required]="true" [block]="true" [(ngModel)]="code"></geo-input>
128
+ <geo-input label="Tên" [required]="true" [block]="true" [(ngModel)]="name"></geo-input>
129
+ </div>
130
+ </geo-form-modal>
131
+ ```
132
+
133
+ ## Tips
134
+
135
+ - Wizard full-page → geo-step-form-layout.
136
+ - okIcon/cancelIcon + placement cho nút Tiếp theo / Quay lại.
137
+ - bodyMaxHeight mặc định 60vh; readonly ẩn nút OK.
138
+ ## Related components
139
+
140
+ - [`geo-stepper`](./geo-stepper.md)
141
+ - [`geo-input`](./geo-input.md)
142
+ - [`geo-select`](./geo-select.md)
143
+ - [`geo-confirm-modal`](./geo-confirm-modal.md)
144
+ - [`geo-step-form-layout`](./geo-step-form-layout.md)
145
+ ## Package path
146
+ `node_modules/@geoit/ui/ai/components/geo-form-modal.md`
147
+
79
148
  ## Source
80
149
  `projects/geo-ui/src/lib/figma/geo-form-modal/geo-form-modal.component.ts`
81
150
 
82
- ## Storybook
83
- GEO / related story for `geo-form-modal`
84
-
85
- ## Rules for AI
86
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
151
+ ## Rules for AI / consumers
152
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
87
153
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
88
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
154
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
155
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,23 @@
1
1
  # geo-icon
2
2
 
3
- > AI quick reference for **GeoIconComponent**
3
+ > Complete usage reference for **GeoIconComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Ant Design icon wrapper with GEO size/color tokens.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoIconComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoIconComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoIconComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-icon`
@@ -24,30 +31,77 @@ Standalone icons; buttons usually use geo-button [icon].
24
31
  ## Do not use when
25
32
  Do not hardcode icon hex colors — use color token names.
26
33
 
34
+ ## How to use
35
+
36
+ Wrapper icon Ant Design. Bắt buộc [type]; size xs|sm|md|lg|xl hoặc px; color dùng token (vd. primary / var(--geo-color-*)).
37
+
38
+ ## Binding
39
+
40
+ Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
41
+
27
42
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `type` | See component TS / Storybook Controls |
31
- | `theme` | See component TS / Storybook Controls |
32
- | `spin` | See component TS / Storybook Controls |
33
- | `size` | See component TS / Storybook Controls |
34
- | `color` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `type` | `string` | | Tên icon Ant Design (vd. `close`, `search`, `appstore`). |
49
+ | `theme` | `'outline' \| 'fill' \| 'twotone'` | `'outline'` | — |
50
+ | `spin` | `boolean` | `false` | — |
51
+ | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| number \| string` | `'md'` | xs \| sm \| md \| lg \| xl \| number(px) \| CSS size string |
52
+ | `color` | `string \| undefined` | `undefined` | CSS color — ưu tiên design token, vd. `var(--geo-color-primary-default)` |
35
53
 
36
54
  ## Outputs
55
+
37
56
  _None_
38
57
 
39
- ## Example
58
+ ## Related types
59
+
60
+ From `figma/geo-icon/geo-icon.types.ts`:
61
+
62
+ ```ts
63
+ export type GeoIconTheme = 'outline' | 'fill' | 'twotone';
64
+
65
+ export type GeoIconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number | string;
66
+ ```
67
+
68
+ ## Examples
69
+
70
+ ### Basic
71
+
40
72
  ```html
41
73
  <geo-icon type="search" size="md" color="primary"></geo-icon>
42
74
  ```
43
75
 
76
+ ### Full options
77
+
78
+ ```html
79
+ <geo-icon
80
+ type="loading"
81
+ theme="outline"
82
+ size="lg"
83
+ color="var(--geo-color-primary-default)"
84
+ [spin]="true"
85
+ ></geo-icon>
86
+ ```
87
+
88
+ ## Tips
89
+
90
+ - Trong nút ưu tiên geo-button [icon].
91
+ - Không hardcode hex — dùng color token.
92
+ - theme outline|fill|twotone; spin cho loading.
93
+ ## Related components
94
+
95
+ - [`geo-button`](./geo-button.md)
96
+ - [`geo-status-tag`](./geo-status-tag.md)
97
+ ## Package path
98
+ `node_modules/@geoit/ui/ai/components/geo-icon.md`
99
+
44
100
  ## Source
45
101
  `projects/geo-ui/src/lib/figma/geo-icon/geo-icon.component.ts`
46
102
 
47
- ## Storybook
48
- GEO / related story for `geo-icon`
49
-
50
- ## Rules for AI
51
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
103
+ ## Rules for AI / consumers
104
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
52
105
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
53
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
106
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
107
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,24 @@
1
1
  # geo-input
2
2
 
3
- > AI quick reference for **GeoInputComponent**
3
+ > Complete usage reference for **GeoInputComponent** (`@geoit/ui`)
4
+ >
5
+ > Read this file before using the component. Use **only** the Inputs/Outputs listed here.
4
6
 
5
7
  ## Summary
6
8
  Text input with label, validation, icons; CVA/ngModel.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoInputComponent } from '@geoit/ui';
14
+ import { FormsModule } from '@angular/forms'; // when using [(ngModel)]
11
15
  ```
12
16
 
13
- Standalone component — add to `imports: [GeoInputComponent]` of the consuming standalone component/module.
17
+ Add to the consuming standalone component:
18
+
19
+ ```ts
20
+ imports: [GeoInputComponent, FormsModule]
21
+ ```
14
22
 
15
23
  ## Selector
16
24
  `geo-input`
@@ -24,42 +32,99 @@ Default text fields in forms.
24
32
  ## Do not use when
25
33
  Long text — use geo-textarea; select options — use geo-select.
26
34
 
35
+ ## How to use
36
+
37
+ Ô text chuẩn form (CVA). label + [(ngModel)]; type text|number|password|email; prefixIcon/suffixIcon; [block] full width.
38
+
39
+ ## Binding
40
+
41
+ Supports **ControlValueAccessor**.
42
+
43
+ ```html
44
+ <geo-input [(ngModel)]="value"></geo-input>
45
+ <!-- or -->
46
+ <geo-input formControlName="field"></geo-input>
47
+ ```
48
+
49
+ Also import `FormsModule` (template-driven) or `ReactiveFormsModule`.
50
+
51
+ Library API uses Angular 18 `input()` / `output()` signals under the hood.
52
+
27
53
  ## Inputs
28
- | Input | Notes |
29
- |-------|-------|
30
- | `label` | See component TS / Storybook Controls |
31
- | `placeholder` | See component TS / Storybook Controls |
32
- | `type` | See component TS / Storybook Controls |
33
- | `disabled` | See component TS / Storybook Controls |
34
- | `readonly` | See component TS / Storybook Controls |
35
- | `required` | See component TS / Storybook Controls |
36
- | `error` | See component TS / Storybook Controls |
37
- | `errorMessage` | See component TS / Storybook Controls |
38
- | `maxlength` | See component TS / Storybook Controls |
39
- | `prefixIcon` | See component TS / Storybook Controls |
40
- | `suffixIcon` | See component TS / Storybook Controls |
41
- | `allowClear` | See component TS / Storybook Controls |
42
- | `block` | See component TS / Storybook Controls |
43
- | `width` | See component TS / Storybook Controls |
54
+
55
+ Every supported Input (do not invent others):
56
+
57
+ | Input | Type | Default | Description |
58
+ |-------|------|---------|-------------|
59
+ | `label` | `string` | `''` | |
60
+ | `placeholder` | `string` | `''` | |
61
+ | `type` | `'text' \| 'number' \| 'password' \| 'email'` | `'text'` | — |
62
+ | `disabled` | `boolean` | `false` | |
63
+ | `readonly` | `boolean` | `false` | |
64
+ | `required` | `boolean` | `false` | |
65
+ | `error` | `boolean` | `false` | |
66
+ | `errorMessage` | `string` | `''` | |
67
+ | `maxlength` | `number \| undefined` | `undefined` | |
68
+ | `prefixIcon` | `string \| undefined` | `undefined` | |
69
+ | `suffixIcon` | `string \| undefined` | `undefined` | |
70
+ | `allowClear` | `boolean` | `false` | — |
71
+ | `block` | `boolean` | `false` | — |
72
+ | `width` | `number \| string \| undefined` | `undefined` | — |
44
73
 
45
74
  ## Outputs
46
- | Output | Notes |
47
- |--------|-------|
48
- | `valueChange` | EventEmitter |
49
- | `enterPressed` | EventEmitter |
50
75
 
51
- ## Example
76
+ | Output | Payload | Description |
77
+ |--------|---------|-------------|
78
+ | `valueChange` | `OutputEmitterRef<string>` | — |
79
+ | `enterPressed` | `OutputEmitterRef<void>` | — |
80
+
81
+
82
+ ## Examples
83
+
84
+ ### Basic
85
+
52
86
  ```html
53
87
  <geo-input label="Họ tên" [required]="true" [block]="true" [(ngModel)]="name"></geo-input>
54
88
  ```
55
89
 
90
+ ### Full options
91
+
92
+ ```html
93
+ <geo-input
94
+ label="Mã hồ sơ"
95
+ placeholder="Nhập mã hồ sơ"
96
+ type="text"
97
+ prefixIcon="search"
98
+ [allowClear]="true"
99
+ [required]="true"
100
+ [block]="true"
101
+ [maxlength]="50"
102
+ [error]="codeError"
103
+ errorMessage="Mã không được để trống"
104
+ [(ngModel)]="code"
105
+ (enterPressed)="onSearch()"
106
+ (valueChange)="onCode($event)"
107
+ ></geo-input>
108
+ ```
109
+
110
+ ## Tips
111
+
112
+ - Văn bản dài → geo-textarea; chọn danh sách → geo-select.
113
+ - error + errorMessage khi validate fail.
114
+ - (enterPressed) cho tìm kiếm nhanh.
115
+ ## Related components
116
+
117
+ - [`geo-textarea`](./geo-textarea.md)
118
+ - [`geo-select`](./geo-select.md)
119
+ - [`geo-form-modal`](./geo-form-modal.md)
120
+ ## Package path
121
+ `node_modules/@geoit/ui/ai/components/geo-input.md`
122
+
56
123
  ## Source
57
124
  `projects/geo-ui/src/lib/figma/geo-input/geo-input.component.ts`
58
125
 
59
- ## Storybook
60
- GEO / related story for `geo-input`
61
-
62
- ## Rules for AI
63
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
126
+ ## Rules for AI / consumers
127
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
64
128
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
65
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
129
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
130
+ - Copy examples and adapt labels/bindings only.
@@ -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.