@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-toast
2
2
 
3
- > AI quick reference for **GeoToastComponent**
3
+ > Complete usage reference for **GeoToastComponent** (`@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
  Toast UI; prefer GeoToastService for app-wide notifications.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
- import { GeoToastComponent } from '@geoit/ui';
13
+ import { GeoToastComponent, GeoToastService } from '@geoit/ui';
14
+ // Inject GeoToastService via constructor — providedIn: 'root'
11
15
  ```
12
16
 
13
- Standalone component — add to `imports: [GeoToastComponent]` of the consuming standalone component/module.
17
+ Add to the consuming standalone component:
18
+
19
+ ```ts
20
+ imports: [GeoToastComponent]
21
+ ```
14
22
 
15
23
  ## Selector
16
24
  `geo-toast`
@@ -24,38 +32,141 @@ Transient success/error after actions.
24
32
  ## Do not use when
25
33
  Persistent inline messages — use geo-alert.
26
34
 
35
+ ## How to use
36
+
37
+ Thông báo tạm thời. Ưu tiên inject GeoToastService (success/error/warning/info). Component geo-toast chỉ khi cần render tĩnh.
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
- | `type` | See component TS / Storybook Controls |
31
- | `title` | See component TS / Storybook Controls |
32
- | `message` | See component TS / Storybook Controls |
33
- | `closable` | See component TS / Storybook Controls |
34
- | `showIcon` | See component TS / Storybook Controls |
35
- | `visible` | See component TS / Storybook Controls |
36
- | `icon` | See component TS / Storybook Controls |
44
+
45
+ Every supported Input (do not invent others):
46
+
47
+ | Input | Type | Default | Description |
48
+ |-------|------|---------|-------------|
49
+ | `type` | `'success' \| 'error' \| 'warning' \| 'info'` | `'info'` | — |
50
+ | `title` | `string` | `''` | |
51
+ | `message` | `string` | `''` | |
52
+ | `closable` | `boolean` | `true` | |
53
+ | `showIcon` | `boolean` | `true` | — |
54
+ | `visible` | `boolean` | `true` | Two-way `model()` (supports banana binding). |
55
+ | `icon` | `string \| undefined` | `undefined` | Override Ant Design icon type. |
37
56
 
38
57
  ## Outputs
39
- | Output | Notes |
40
- |--------|-------|
41
- | `closed` | EventEmitter |
42
58
 
43
- ## Example
44
- ```html
45
- // Preferred
46
- this.toast.success('Thành công!', 'Đã lưu hồ sơ.');
59
+ | Output | Payload | Description |
60
+ |--------|---------|-------------|
61
+ | `closed` | `OutputEmitterRef<void>` | — |
62
+
63
+ ## Related types
64
+
65
+ From `figma/geo-toast/geo-toast.types.ts`:
66
+
67
+ ```ts
68
+ export interface GeoToastOptions {
69
+ /** Auto close duration (ms). `0` = không tự đóng. Default `4500`. */
70
+ duration?: number;
71
+ /** Vị trí toast. Default `topRight`. */
72
+ placement?: GeoToastPlacement;
73
+ /** Pause countdown khi hover. Default `true`. */
74
+ pauseOnHover?: boolean;
75
+ /** Animate enter/leave. Default `true`. */
76
+ animate?: boolean;
77
+ /** Unique key — toast cùng key sẽ được thay thế. */
78
+ key?: string;
79
+ /** Hiện icon trạng thái. Default `true`. */
80
+ showIcon?: boolean;
81
+ /** Hiện nút đóng. Default `true`. */
82
+ closable?: boolean;
83
+ /** Custom icon type (Ant Design). */
84
+ icon?: string;
85
+ /** Inline style trên notice. */
86
+ style?: NgStyleInterface;
87
+ /** Extra CSS class. */
88
+ className?: NgClassInterface | string;
89
+ /** Arbitrary data gắn vào notice. */
90
+ data?: unknown;
91
+ }
92
+
93
+ export interface GeoToastConfig extends GeoToastOptions {
94
+ type: GeoToastType;
95
+ title?: string;
96
+ message?: string;
97
+ }
98
+
99
+ export interface GeoToastGlobalConfig {
100
+ duration?: number;
101
+ placement?: GeoToastPlacement;
102
+ pauseOnHover?: boolean;
103
+ animate?: boolean;
104
+ maxStack?: number;
105
+ top?: number;
106
+ bottom?: number;
107
+ }
108
+
109
+ export type GeoToastType = 'success' | 'error' | 'warning' | 'info';
47
110
 
48
- // Or static
49
- <geo-toast type="success" title="Thành công!" message="Đã lưu."></geo-toast>
111
+ export type GeoToastPlacement = NzNotificationPlacement;
50
112
  ```
51
113
 
114
+ ## Examples
115
+
116
+ ### Service (preferred)
117
+
118
+ ```ts
119
+ import { GeoToastService } from '@geoit/ui';
120
+
121
+ constructor(private toast: GeoToastService) {}
122
+
123
+ save(): void {
124
+ this.toast.success('Thành công!', 'Đã lưu hồ sơ.');
125
+ }
126
+
127
+ fail(): void {
128
+ this.toast.error('Lỗi!', 'Không thể lưu.', { duration: 0 });
129
+ }
130
+
131
+ warn(): void {
132
+ this.toast.warning('Cảnh báo!', 'Dữ liệu chưa đầy đủ.');
133
+ }
134
+
135
+ info(): void {
136
+ this.toast.info('Thông báo', 'Hệ thống sẽ bảo trì lúc 22:00.');
137
+ }
138
+ ```
139
+
140
+ ### Static template
141
+
142
+ ```html
143
+ <geo-toast
144
+ type="success"
145
+ title="Thành công!"
146
+ message="Đã lưu."
147
+ [closable]="true"
148
+ [showIcon]="true"
149
+ [visible]="true"
150
+ ></geo-toast>
151
+ ```
152
+
153
+ ## Tips
154
+
155
+ - Inline persistent → geo-alert.
156
+ - duration: 0 để toast không tự đóng.
157
+ - Import GeoToastService từ @geoit/ui (providedIn root).
158
+ ## Related components
159
+
160
+ - [`geo-alert`](./geo-alert.md)
161
+ - [`geo-confirm-modal`](./geo-confirm-modal.md)
162
+ ## Package path
163
+ `node_modules/@geoit/ui/ai/components/geo-toast.md`
164
+
52
165
  ## Source
53
166
  `projects/geo-ui/src/lib/figma/geo-toast/geo-toast.component.ts`
54
167
 
55
- ## Storybook
56
- GEO / related story for `geo-toast`
57
-
58
- ## Rules for AI
59
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
168
+ ## Rules for AI / consumers
169
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
60
170
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
61
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
171
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
172
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,23 @@
1
1
  # geo-tree
2
2
 
3
- > AI quick reference for **GeoTreeComponent**
3
+ > Complete usage reference for **GeoTreeComponent** (`@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
  Tree view with checkable / expandable nodes.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoTreeComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoTreeComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoTreeComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-tree`
@@ -24,35 +31,100 @@ Hierarchy selection (org, folder, category).
24
31
  ## Do not use when
25
32
  Flat lists — use geo-table or select.
26
33
 
34
+ ## How to use
35
+
36
+ Cây phân cấp. [nodes] GeoTreeNode[]; bật checkable + [(checkedKeys)]; [(expandedKeys)]; (nodeClick).
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
- | `nodes` | See component TS / Storybook Controls |
31
- | `checkable` | See component TS / Storybook Controls |
32
- | `checkedKeys` | See component TS / Storybook Controls |
33
- | `expandedKeys` | See component TS / Storybook Controls |
34
- | `showLine` | See component TS / Storybook Controls |
35
- | `blockNode` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `nodes` | `GeoTreeNode[]` | `[]` | |
49
+ | `checkable` | `boolean` | `false` | |
50
+ | `checkedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
51
+ | `expandedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
52
+ | `showLine` | `boolean` | `false` | — |
53
+ | `blockNode` | `boolean` | `false` | — |
36
54
 
37
55
  ## Outputs
38
- | Output | Notes |
39
- |--------|-------|
40
- | `checkedKeysChange` | EventEmitter |
41
- | `expandedKeysChange` | EventEmitter |
42
- | `nodeClick` | EventEmitter |
43
56
 
44
- ## Example
57
+ | Output | Payload | Description |
58
+ |--------|---------|-------------|
59
+ | `nodeClick` | `OutputEmitterRef<NzFormatEmitEvent>` | — |
60
+
61
+ ## Related types
62
+
63
+ From `figma/geo-tree/geo-tree.types.ts`:
64
+
65
+ ```ts
66
+ export interface GeoTreeNode {
67
+ key: string;
68
+ title: string;
69
+ expanded?: boolean;
70
+ children?: GeoTreeNode[];
71
+ isLeaf?: boolean;
72
+ disabled?: boolean;
73
+ disableCheckbox?: boolean;
74
+ /** Payload tùy chọn (domain gắn data nghiệp vụ). */
75
+ data?: unknown;
76
+ [prop: string]: unknown;
77
+ }
78
+ ```
79
+
80
+ ## Examples
81
+
82
+ ### Basic
83
+
45
84
  ```html
46
85
  <geo-tree [nodes]="nodes" [checkable]="true" [(checkedKeys)]="checked"></geo-tree>
47
86
  ```
48
87
 
88
+ ### Full options
89
+
90
+ ```html
91
+ <geo-tree
92
+ [nodes]="[
93
+ {
94
+ title: 'Đơn vị gốc',
95
+ key: 'root',
96
+ children: [
97
+ { title: 'Phòng A', key: 'a' },
98
+ { title: 'Phòng B', key: 'b' }
99
+ ]
100
+ }
101
+ ]"
102
+ [checkable]="true"
103
+ [(checkedKeys)]="checkedKeys"
104
+ [(expandedKeys)]="expandedKeys"
105
+ [showLine]="true"
106
+ [blockNode]="true"
107
+ (nodeClick)="onNode($event)"
108
+ ></geo-tree>
109
+ ```
110
+
111
+ ## Tips
112
+
113
+ - nodes: { title, key, children? }[].
114
+ - showLine / blockNode theo design cần thiết.
115
+ - Không dùng thay select đơn giản.
116
+ ## Related components
117
+
118
+ - [`geo-checkbox`](./geo-checkbox.md)
119
+ - [`geo-select`](./geo-select.md)
120
+ ## Package path
121
+ `node_modules/@geoit/ui/ai/components/geo-tree.md`
122
+
49
123
  ## Source
50
124
  `projects/geo-ui/src/lib/figma/geo-tree/geo-tree.component.ts`
51
125
 
52
- ## Storybook
53
- GEO / related story for `geo-tree`
54
-
55
- ## Rules for AI
56
- - 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.
57
128
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
58
- - 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.
@@ -1,16 +1,23 @@
1
1
  # geo-typography
2
2
 
3
- > AI quick reference for **GeoTypographyComponent**
3
+ > Complete usage reference for **GeoTypographyComponent** (`@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 with GEO type scale (h1–tiny) and semantic colors.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoTypographyComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoTypographyComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoTypographyComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-typography`
@@ -24,34 +31,78 @@ All readable text; prefer over raw h1/p with custom CSS.
24
31
  ## Do not use when
25
32
  Do not hardcode font-size/color — use variant/color props.
26
33
 
34
+ ## How to use
35
+
36
+ Text theo type scale GEO. variant h1–h4|subtitle|body|body-small|caption|…; color semantic; strong/underline/mark/code.
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
- | `variant` | See component TS / Storybook Controls |
31
- | `color` | See component TS / Storybook Controls |
32
- | `strong` | See component TS / Storybook Controls |
33
- | `underline` | See component TS / Storybook Controls |
34
- | `delete` | See component TS / Storybook Controls |
35
- | `mark` | See component TS / Storybook Controls |
36
- | `code` | See component TS / Storybook Controls |
37
- | `disabled` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `variant` | `'h1' \| 'h2' \| 'h3' \| 'h4' \| 'subtitle' \| 'body' \| 'body-small' \| 'caption' \| 'overline' \| 'tiny'` | `'body'` | Type scale variant from the design system. |
49
+ | `color` | `'default' \| 'secondary' \| 'primary' \| 'success' \| 'warning' \| 'danger' \| 'disabled'` | `'default'` | Semantic text color. |
50
+ | `strong` | `boolean` | `false` | Force bold weight (overrides variant weight when true). |
51
+ | `underline` | `boolean` | `false` | Underline text decoration. |
52
+ | `delete` | `boolean` | `false` | Strikethrough text decoration. |
53
+ | `mark` | `boolean` | `false` | Mark / highlight background. |
54
+ | `code` | `boolean` | `false` | Monospace code appearance. |
55
+ | `disabled` | `boolean` | `false` | Disabled appearance |
38
56
 
39
57
  ## Outputs
58
+
40
59
  _None_
41
60
 
42
- ## Example
61
+ ## Related types
62
+
63
+ From `figma/geo-typography/geo-typography.types.ts`:
64
+
65
+ ```ts
66
+ export type GeoTypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'subtitle' | 'body' | 'body-small' | 'caption' | 'overline' | 'tiny';
67
+
68
+ export type GeoTypographyColor = 'default' | 'secondary' | 'primary' | 'success' | 'warning' | 'danger' | 'disabled';
69
+ ```
70
+
71
+ ## Examples
72
+
73
+ ### Basic
74
+
43
75
  ```html
44
76
  <geo-typography variant="h3">Tiêu đề</geo-typography>
45
77
  <geo-typography variant="body" color="secondary">Mô tả phụ</geo-typography>
46
78
  ```
47
79
 
80
+ ### Full options
81
+
82
+ ```html
83
+ <geo-typography variant="h4" [strong]="true">1. Thông tin cá nhân</geo-typography>
84
+ <geo-typography variant="body" color="primary" [underline]="true">Xem chi tiết</geo-typography>
85
+ <geo-typography variant="caption" color="danger">Trường bắt buộc</geo-typography>
86
+ <geo-typography variant="body-small" [code]="true">HS-2024-001</geo-typography>
87
+ ```
88
+
89
+ ## Tips
90
+
91
+ - Tiêu đề trang có gạch nhấn → geo-page-title.
92
+ - color: default|secondary|primary|success|warning|danger|disabled.
93
+ - Không hardcode font-size — dùng variant.
94
+ ## Related components
95
+
96
+ - [`geo-page-title`](./geo-page-title.md)
97
+ - [`geo-status-tag`](./geo-status-tag.md)
98
+ ## Package path
99
+ `node_modules/@geoit/ui/ai/components/geo-typography.md`
100
+
48
101
  ## Source
49
102
  `projects/geo-ui/src/lib/figma/geo-typography/geo-typography.component.ts`
50
103
 
51
- ## Storybook
52
- GEO / related story for `geo-typography`
53
-
54
- ## Rules for AI
55
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
104
+ ## Rules for AI / consumers
105
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
56
106
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
57
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
107
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
108
+ - Copy examples and adapt labels/bindings only.
@@ -1,16 +1,23 @@
1
1
  # geo-upload
2
2
 
3
- > AI quick reference for **GeoUploadComponent**
3
+ > Complete usage reference for **GeoUploadComponent** (`@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
  Drag-drop upload zone with progress list.
7
9
 
8
10
  ## Import
11
+
9
12
  ```ts
10
13
  import { GeoUploadComponent } from '@geoit/ui';
11
14
  ```
12
15
 
13
- Standalone component — add to `imports: [GeoUploadComponent]` of the consuming standalone component/module.
16
+ Add to the consuming standalone component:
17
+
18
+ ```ts
19
+ imports: [GeoUploadComponent]
20
+ ```
14
21
 
15
22
  ## Selector
16
23
  `geo-upload`
@@ -24,40 +31,69 @@ Multi-file upload with progress UI.
24
31
  ## Do not use when
25
32
  Simple one-file form field — use geo-file-picker.
26
33
 
34
+ ## How to use
35
+
36
+ Vùng kéo-thả upload + danh sách tiến độ. accept/maxSize; [(fileList)]; (change)/(remove)/(reject). Form gọn một file → geo-file-picker.
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
- | `action` | See component TS / Storybook Controls |
31
- | `accept` | See component TS / Storybook Controls |
32
- | `maxSize` | See component TS / Storybook Controls |
33
- | `multiple` | See component TS / Storybook Controls |
34
- | `disabled` | See component TS / Storybook Controls |
35
- | `error` | See component TS / Storybook Controls |
36
- | `errorMessage` | See component TS / Storybook Controls |
37
- | `hint` | See component TS / Storybook Controls |
38
- | `titlePrefix` | See component TS / Storybook Controls |
39
- | `selectText` | See component TS / Storybook Controls |
40
- | `titleSuffix` | See component TS / Storybook Controls |
41
- | `listTitle` | See component TS / Storybook Controls |
42
- | `showListTitle` | See component TS / Storybook Controls |
43
- | `fileList` | See component TS / Storybook Controls |
44
- | `headers` | See component TS / Storybook Controls |
45
- | `data` | See component TS / Storybook Controls |
46
- | `name` | See component TS / Storybook Controls |
47
- | `withCredentials` | See component TS / Storybook Controls |
48
- | `directory` | See component TS / Storybook Controls |
49
- | `customRequest` | See component TS / Storybook Controls |
50
- | `beforeUpload` | See component TS / Storybook Controls |
43
+
44
+ Every supported Input (do not invent others):
45
+
46
+ | Input | Type | Default | Description |
47
+ |-------|------|---------|-------------|
48
+ | `action` | `string \| ((file: NzUploadFile) => string \| Observable<string>)` | `''` | Upload endpoint — bỏ trống nếu dùng `customRequest` / chỉ chọn file local. |
49
+ | `accept` | `string` | `'.png,.jpg,.jpeg,.svg'` | |
50
+ | `maxSize` | | `1024 * 1024` | Max size (bytes). Default 1MB. `0` = không giới hạn. |
51
+ | `multiple` | `boolean` | `true` | |
52
+ | `disabled` | `boolean` | `false` | |
53
+ | `error` | `boolean` | `false` | |
54
+ | `errorMessage` | `string` | `''` | |
55
+ | `hint` | `string` | `'Chỉ cho phép file dạng .png, .jpg, .jpeg, .svg và dung lượng không quá 1Mb'` | — |
56
+ | `titlePrefix` | `string` | `'Kéo thả ảnh hoặc'` | — |
57
+ | `selectText` | `string` | `'Chọn file'` | |
58
+ | `titleSuffix` | `string` | `'để tải lên'` | |
59
+ | `listTitle` | `string` | `'Tập tin đính kèm'` | — |
60
+ | `showListTitle` | `boolean` | `true` | |
61
+ | `fileList` | `GeoUploadFile[]` | `[]` | Controlled file list. — Two-way `model()` (supports banana binding). |
62
+ | `headers` | `{} \| ((file: NzUploadFile) => {} \| Observable<{}>) \| undefined` | `undefined` | — |
63
+ | `data` | `{} \| ((file: NzUploadFile) => {} \| Observable<{}>) \| undefined` | `undefined` | — |
64
+ | `name` | `string` | `'file'` | |
65
+ | `withCredentials` | `boolean` | `false` | |
66
+ | `directory` | `boolean` | `false` | — |
67
+ | `customRequest` | `GeoUploadCustomRequest \| undefined` | `undefined` | Custom XHR — mặc định simulate progress khi không có `action`. |
68
+ | `beforeUpload` | `((file: NzUploadFile, fileList: NzUploadFile[]) => boolean \| Observable<boolean>) \| undefined` | `undefined` | — |
51
69
 
52
70
  ## Outputs
53
- | Output | Notes |
54
- |--------|-------|
55
- | `fileListChange` | EventEmitter |
56
- | `change` | EventEmitter |
57
- | `remove` | EventEmitter |
58
- | `reject` | EventEmitter |
59
-
60
- ## Example
71
+
72
+ | Output | Payload | Description |
73
+ |--------|---------|-------------|
74
+ | `change` | `OutputEmitterRef<NzUploadChangeParam>` | — |
75
+ | `remove` | `OutputEmitterRef<GeoUploadFile>` | — |
76
+ | `reject` | `OutputEmitterRef<{ file: File; reason: 'type' \| 'size' }>` | — |
77
+
78
+ ## Related types
79
+
80
+ From `figma/geo-upload/geo-upload.types.ts`:
81
+
82
+ ```ts
83
+ export interface GeoUploadFile extends NzUploadFile {
84
+ /** Bytes uploaded so far (for "100Kb / 200Kb"). */
85
+ loaded?: number;
86
+ /** Upload speed in bytes/sec (for "870kb/sec"). */
87
+ speed?: number;
88
+ }
89
+
90
+ export type GeoUploadCustomRequest = (item: NzUploadXHRArgs) => Subscription;
91
+ ```
92
+
93
+ ## Examples
94
+
95
+ ### Basic
96
+
61
97
  ```html
62
98
  <geo-upload
63
99
  accept=".png,.jpg"
@@ -66,13 +102,47 @@ Simple one-file form field — use geo-file-picker.
66
102
  ></geo-upload>
67
103
  ```
68
104
 
105
+ ### Full options
106
+
107
+ ```html
108
+ <geo-upload
109
+ action="/api/upload"
110
+ accept=".png,.jpg,.jpeg,.svg,.pdf"
111
+ [maxSize]="2097152"
112
+ [multiple]="true"
113
+ [disabled]="false"
114
+ hint="Chỉ cho phép .png, .jpg, .pdf và dung lượng không quá 2Mb"
115
+ titlePrefix="Kéo thả ảnh hoặc"
116
+ selectText="Chọn file"
117
+ titleSuffix="để tải lên"
118
+ listTitle="Tập tin đính kèm"
119
+ [showListTitle]="true"
120
+ [(fileList)]="files"
121
+ (fileListChange)="onFiles($event)"
122
+ (change)="onUploadChange($event)"
123
+ (remove)="onRemove($event)"
124
+ (reject)="onReject($event)"
125
+ ></geo-upload>
126
+ ```
127
+
128
+ ## Tips
129
+
130
+ - maxSize tính bằng byte (mặc định 1MB).
131
+ - hint/titlePrefix/selectText/titleSuffix tiếng Việt tùy chỉnh.
132
+ - customRequest / beforeUpload khi cần upload tùy biến.
133
+ ## Related components
134
+
135
+ - [`geo-file-picker`](./geo-file-picker.md)
136
+ - [`geo-form-modal`](./geo-form-modal.md)
137
+ - [`geo-button`](./geo-button.md)
138
+ ## Package path
139
+ `node_modules/@geoit/ui/ai/components/geo-upload.md`
140
+
69
141
  ## Source
70
142
  `projects/geo-ui/src/lib/figma/geo-upload/geo-upload.component.ts`
71
143
 
72
- ## Storybook
73
- GEO / related story for `geo-upload`
74
-
75
- ## Rules for AI
76
- - Prefer this component over raw ng-zorro / HTML equivalents for the same UI role.
144
+ ## Rules for AI / consumers
145
+ - Prefer this component over raw ng-zorro / HTML for the same UI role.
77
146
  - Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
78
- - Match props to Storybook Controls / this doc; do not invent unsupported inputs.
147
+ - Match props exactly to the Inputs table; do not invent unsupported inputs.
148
+ - Copy examples and adapt labels/bindings only.