@geoit/ui 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/AGENTS.md +12 -8
  2. package/README.md +49 -62
  3. package/ai/AGENTS.md +38 -28
  4. package/ai/README.md +35 -1
  5. package/ai/catalog.json +2796 -288
  6. package/ai/components/geo-alert.md +3 -3
  7. package/ai/components/geo-back-button.md +2 -2
  8. package/ai/components/geo-breadcrumb.md +1 -1
  9. package/ai/components/geo-button.md +3 -3
  10. package/ai/components/geo-chart.md +103 -0
  11. package/ai/components/geo-checkbox.md +4 -6
  12. package/ai/components/geo-column-picker.md +3 -3
  13. package/ai/components/geo-confirm-modal.md +4 -5
  14. package/ai/components/geo-dashboard.md +91 -0
  15. package/ai/components/geo-date-picker.md +5 -3
  16. package/ai/components/geo-date-range-picker.md +5 -3
  17. package/ai/components/geo-empty-state.md +75 -0
  18. package/ai/components/geo-feedback-form.md +97 -0
  19. package/ai/components/geo-file-picker.md +4 -2
  20. package/ai/components/geo-forgot-password.md +78 -0
  21. package/ai/components/geo-form-modal.md +9 -10
  22. package/ai/components/geo-icon.md +3 -3
  23. package/ai/components/geo-input.md +8 -6
  24. package/ai/components/geo-layout-footer.md +70 -0
  25. package/ai/components/geo-layout-header-actions.md +82 -0
  26. package/ai/components/geo-layout-header.md +89 -0
  27. package/ai/components/geo-layout-sidebar.md +86 -0
  28. package/ai/components/geo-layout.md +155 -0
  29. package/ai/components/geo-list-page.md +72 -0
  30. package/ai/components/geo-login.md +94 -0
  31. package/ai/components/geo-map-admin-filter.md +80 -0
  32. package/ai/components/geo-map-basemap-switcher.md +75 -0
  33. package/ai/components/geo-map-help.md +72 -0
  34. package/ai/components/geo-map-layer-card.md +73 -0
  35. package/ai/components/geo-map-layer-panel.md +75 -0
  36. package/ai/components/geo-map-layers-drawer.md +78 -0
  37. package/ai/components/geo-map-legend.md +74 -0
  38. package/ai/components/geo-map-locate.md +75 -0
  39. package/ai/components/geo-map-location-chip.md +71 -0
  40. package/ai/components/geo-map-measure.md +74 -0
  41. package/ai/components/geo-map-opacity.md +75 -0
  42. package/ai/components/geo-map-parcel-popup.md +79 -0
  43. package/ai/components/geo-map-search.md +83 -0
  44. package/ai/components/geo-map-shell.md +110 -0
  45. package/ai/components/geo-map-snapshot.md +75 -0
  46. package/ai/components/geo-map-swipe.md +73 -0
  47. package/ai/components/geo-map-toolbar.md +76 -0
  48. package/ai/components/geo-map-zoom.md +74 -0
  49. package/ai/components/geo-map.md +205 -0
  50. package/ai/components/geo-overlap-result.md +88 -0
  51. package/ai/components/geo-page-header.md +72 -0
  52. package/ai/components/geo-page-title.md +1 -1
  53. package/ai/components/geo-pagination.md +4 -7
  54. package/ai/components/geo-radio.md +3 -1
  55. package/ai/components/geo-row-actions.md +3 -3
  56. package/ai/components/geo-select.md +4 -2
  57. package/ai/components/geo-slider.md +5 -7
  58. package/ai/components/geo-stat-card.md +98 -0
  59. package/ai/components/geo-status-tag.md +2 -2
  60. package/ai/components/geo-step-form-layout.md +7 -8
  61. package/ai/components/geo-stepper.md +3 -4
  62. package/ai/components/geo-table-filter.md +4 -5
  63. package/ai/components/geo-table-pagination.md +4 -7
  64. package/ai/components/geo-table-toolbar.md +7 -7
  65. package/ai/components/geo-table.md +17 -20
  66. package/ai/components/geo-tabs.md +4 -6
  67. package/ai/components/geo-textarea.md +4 -2
  68. package/ai/components/geo-toast.md +4 -4
  69. package/ai/components/geo-tree.md +4 -6
  70. package/ai/components/geo-typography.md +1 -1
  71. package/ai/components/geo-upload.md +9 -10
  72. package/ai/mockup.html +1194 -0
  73. package/ai/recipes.md +98 -85
  74. package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +19 -36
  75. package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +14 -24
  76. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +8 -11
  77. package/esm2022/lib/figma/geo-button/geo-button.component.mjs +30 -59
  78. package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +88 -0
  79. package/esm2022/lib/figma/geo-chart/geo-chart.types.mjs +2 -0
  80. package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +11 -22
  81. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +22 -54
  82. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.component.mjs +49 -0
  83. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.types.mjs +2 -0
  84. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +48 -78
  85. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +47 -75
  86. package/esm2022/lib/figma/geo-empty-state/geo-empty-state.component.mjs +25 -0
  87. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.component.mjs +75 -0
  88. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.types.mjs +2 -0
  89. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +59 -81
  90. package/esm2022/lib/figma/geo-forgot-password/geo-forgot-password.component.mjs +51 -0
  91. package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +45 -112
  92. package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +22 -32
  93. package/esm2022/lib/figma/geo-input/geo-input.component.mjs +41 -70
  94. package/esm2022/lib/figma/geo-layout/footer/geo-layout-footer.component.mjs +18 -0
  95. package/esm2022/lib/figma/geo-layout/geo-layout-actions.directive.mjs +15 -0
  96. package/esm2022/lib/figma/geo-layout/geo-layout.component.mjs +79 -0
  97. package/esm2022/lib/figma/geo-layout/geo-layout.types.mjs +42 -0
  98. package/esm2022/lib/figma/geo-layout/header/geo-layout-header.component.mjs +60 -0
  99. package/esm2022/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.mjs +70 -0
  100. package/esm2022/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.mjs +90 -0
  101. package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +22 -0
  102. package/esm2022/lib/figma/geo-login/geo-login.component.mjs +58 -0
  103. package/esm2022/lib/figma/geo-login/geo-login.types.mjs +2 -0
  104. package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +52 -0
  105. package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +61 -0
  106. package/esm2022/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.mjs +26 -0
  107. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.mjs +24 -0
  108. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs +146 -0
  109. package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +37 -0
  110. package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +30 -0
  111. package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +72 -0
  112. package/esm2022/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.mjs +21 -0
  113. package/esm2022/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.mjs +375 -0
  114. package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +94 -0
  115. package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +136 -0
  116. package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +182 -0
  117. package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +577 -0
  118. package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +93 -0
  119. package/esm2022/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.mjs +129 -0
  120. package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +64 -0
  121. package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +295 -0
  122. package/esm2022/lib/figma/geo-map/geo-map-toolbar.icons.mjs +18 -0
  123. package/esm2022/lib/figma/geo-map/geo-map.component.mjs +144 -0
  124. package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +497 -0
  125. package/esm2022/lib/figma/geo-map/geo-map.controller.mjs +71 -0
  126. package/esm2022/lib/figma/geo-map/geo-map.types.mjs +2 -0
  127. package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +368 -0
  128. package/esm2022/lib/figma/geo-map/services/geo-map-projection.service.mjs +110 -0
  129. package/esm2022/lib/figma/geo-map/services/geo-map.service.mjs +540 -0
  130. package/esm2022/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.mjs +47 -0
  131. package/esm2022/lib/figma/geo-map/utils/geo-map-interactions.util.mjs +30 -0
  132. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.component.mjs +25 -0
  133. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.types.mjs +2 -0
  134. package/esm2022/lib/figma/geo-page-header/geo-page-header.component.mjs +23 -0
  135. package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +20 -35
  136. package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +13 -43
  137. package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +32 -52
  138. package/esm2022/lib/figma/geo-select/geo-select.component.mjs +46 -72
  139. package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +12 -28
  140. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.component.mjs +163 -0
  141. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.types.mjs +2 -0
  142. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +23 -27
  143. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +39 -96
  144. package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +18 -33
  145. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +14 -24
  146. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +18 -36
  147. package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +41 -98
  148. package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +40 -73
  149. package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +26 -56
  150. package/esm2022/lib/figma/geo-table/geo-table.component.mjs +110 -210
  151. package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +33 -63
  152. package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +28 -44
  153. package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +18 -39
  154. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +12 -40
  155. package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +49 -64
  156. package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +50 -101
  157. package/esm2022/lib/figma/index.mjs +50 -1
  158. package/esm2022/lib/styles/tokens.mjs +56 -24
  159. package/fesm2022/geoit-ui.mjs +5981 -1825
  160. package/fesm2022/geoit-ui.mjs.map +1 -1
  161. package/lib/figma/geo-alert/geo-alert.component.d.ts +10 -11
  162. package/lib/figma/geo-back-button/geo-back-button.component.d.ts +6 -7
  163. package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +2 -2
  164. package/lib/figma/geo-button/geo-button.component.d.ts +21 -17
  165. package/lib/figma/geo-chart/geo-chart.component.d.ts +40 -0
  166. package/lib/figma/geo-chart/geo-chart.types.d.ts +13 -0
  167. package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +6 -7
  168. package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +15 -17
  169. package/lib/figma/geo-dashboard/geo-dashboard.component.d.ts +29 -0
  170. package/lib/figma/geo-dashboard/geo-dashboard.types.d.ts +7 -0
  171. package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +26 -21
  172. package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +25 -20
  173. package/lib/figma/geo-empty-state/geo-empty-state.component.d.ts +17 -0
  174. package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +36 -0
  175. package/lib/figma/geo-feedback-form/geo-feedback-form.types.d.ts +8 -0
  176. package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +23 -20
  177. package/lib/figma/geo-forgot-password/geo-forgot-password.component.d.ts +24 -0
  178. package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +33 -35
  179. package/lib/figma/geo-icon/geo-icon.component.d.ts +7 -7
  180. package/lib/figma/geo-input/geo-input.component.d.ts +23 -21
  181. package/lib/figma/geo-layout/footer/geo-layout-footer.component.d.ts +10 -0
  182. package/lib/figma/geo-layout/geo-layout-actions.directive.d.ts +6 -0
  183. package/lib/figma/geo-layout/geo-layout.component.d.ts +48 -0
  184. package/lib/figma/geo-layout/geo-layout.types.d.ts +44 -0
  185. package/lib/figma/geo-layout/header/geo-layout-header.component.d.ts +31 -0
  186. package/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.d.ts +32 -0
  187. package/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.d.ts +34 -0
  188. package/lib/figma/geo-list-page/geo-list-page.component.d.ts +16 -0
  189. package/lib/figma/geo-login/geo-login.component.d.ts +27 -0
  190. package/lib/figma/geo-login/geo-login.types.d.ts +6 -0
  191. package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +28 -0
  192. package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +26 -0
  193. package/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.d.ts +20 -0
  194. package/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.d.ts +15 -0
  195. package/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.d.ts +40 -0
  196. package/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.d.ts +25 -0
  197. package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +18 -0
  198. package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.d.ts +24 -0
  199. package/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.d.ts +14 -0
  200. package/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.d.ts +49 -0
  201. package/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.d.ts +30 -0
  202. package/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.d.ts +44 -0
  203. package/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.d.ts +56 -0
  204. package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +103 -0
  205. package/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.d.ts +21 -0
  206. package/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.d.ts +33 -0
  207. package/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.d.ts +30 -0
  208. package/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.d.ts +67 -0
  209. package/lib/figma/geo-map/geo-map-toolbar.icons.d.ts +17 -0
  210. package/lib/figma/geo-map/geo-map.component.d.ts +53 -0
  211. package/lib/figma/geo-map/geo-map.constants.d.ts +73 -0
  212. package/lib/figma/geo-map/geo-map.controller.d.ts +49 -0
  213. package/lib/figma/geo-map/geo-map.types.d.ts +224 -0
  214. package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +42 -0
  215. package/lib/figma/geo-map/services/geo-map-projection.service.d.ts +32 -0
  216. package/lib/figma/geo-map/services/geo-map.service.d.ts +99 -0
  217. package/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.d.ts +13 -0
  218. package/lib/figma/geo-map/utils/geo-map-interactions.util.d.ts +9 -0
  219. package/lib/figma/geo-overlap-result/geo-overlap-result.component.d.ts +18 -0
  220. package/lib/figma/geo-overlap-result/geo-overlap-result.types.d.ts +7 -0
  221. package/lib/figma/geo-page-header/geo-page-header.component.d.ts +16 -0
  222. package/lib/figma/geo-page-title/geo-page-title.component.d.ts +9 -9
  223. package/lib/figma/geo-pagination/geo-pagination.component.d.ts +9 -14
  224. package/lib/figma/geo-radio/geo-radio.component.d.ts +17 -15
  225. package/lib/figma/geo-select/geo-select.component.d.ts +24 -19
  226. package/lib/figma/geo-slider/geo-slider.component.d.ts +7 -9
  227. package/lib/figma/geo-stat-card/geo-stat-card.component.d.ts +50 -0
  228. package/lib/figma/geo-stat-card/geo-stat-card.types.d.ts +11 -0
  229. package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +7 -7
  230. package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +27 -29
  231. package/lib/figma/geo-stepper/geo-stepper.component.d.ts +6 -8
  232. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +6 -7
  233. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +11 -12
  234. package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +21 -28
  235. package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +17 -20
  236. package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +17 -18
  237. package/lib/figma/geo-table/geo-table.component.d.ts +58 -62
  238. package/lib/figma/geo-tabs/geo-tabs.component.d.ts +14 -17
  239. package/lib/figma/geo-textarea/geo-textarea.component.d.ts +15 -13
  240. package/lib/figma/geo-toast/geo-toast.component.d.ts +11 -12
  241. package/lib/figma/geo-tree/geo-tree.component.d.ts +8 -13
  242. package/lib/figma/geo-typography/geo-typography.component.d.ts +13 -13
  243. package/lib/figma/geo-upload/geo-upload.component.d.ts +26 -28
  244. package/lib/figma/index.d.ts +49 -0
  245. package/lib/styles/tokens.d.ts +56 -23
  246. package/package.json +4 -2
  247. package/src/lib/figma/geo-map/assets/toolbar/fullscreen.svg +8 -0
  248. package/src/lib/figma/geo-map/assets/toolbar/home.svg +3 -0
  249. package/src/lib/figma/geo-map/assets/toolbar/layers.svg +3 -0
  250. package/src/lib/figma/geo-map/assets/toolbar/measure-area.svg +12 -0
  251. package/src/lib/figma/geo-map/assets/toolbar/measure-distance.svg +5 -0
  252. package/src/lib/figma/geo-map/assets/toolbar/pan.svg +13 -0
  253. package/src/lib/figma/geo-map/assets/toolbar/search.svg +3 -0
  254. package/src/lib/figma/geo-map/assets/toolbar/zoom-in.svg +3 -0
  255. package/src/lib/figma/geo-map/assets/toolbar/zoom-out.svg +5 -0
  256. package/src/lib/styles/design-tokens.scss +108 -35
  257. package/src/lib/styles/scrollbar.scss +2 -2
  258. package/src/lib/styles/theme.scss +1 -1
package/AGENTS.md CHANGED
@@ -2,7 +2,18 @@
2
2
 
3
3
  Package name: **`@geoit/ui`**
4
4
 
5
- Canonical AI docs live under **`ai/`**:
5
+ Canonical AI docs live under **`ai/`**.
6
+
7
+ ## Library code (`src/lib/figma`)
8
+
9
+ Use **Angular 18** conventions:
10
+
11
+ - `input()` / `output()` / `model()` — not `@Input` / `@Output`
12
+ - `ChangeDetectionStrategy.OnPush`
13
+ - `@if` / `@for`; `inject()` for DI
14
+ - See `.cursor/rules/angular-18-figma.mdc`
15
+
16
+ ## AI docs
6
17
 
7
18
  | File | Purpose |
8
19
  |------|---------|
@@ -12,14 +23,7 @@ Canonical AI docs live under **`ai/`**:
12
23
  | [`ai/recipes.md`](./ai/recipes.md) | Copy-paste UI recipes |
13
24
  | [`ai/README.md`](./ai/README.md) | Index |
14
25
 
15
- Regenerate component docs + catalog:
16
-
17
26
  ```bash
18
27
  npm run ai:docs
19
- ```
20
-
21
- Install in other projects:
22
-
23
- ```bash
24
28
  npm install @geoit/ui
25
29
  ```
package/README.md CHANGED
@@ -20,55 +20,41 @@ npm install @angular/animations@^18 @angular/common@^18 @angular/core@^18 \
20
20
  In your global styles (e.g. `styles.scss`):
21
21
 
22
22
  ```scss
23
- @import 'node_modules/@geoit/ui/src/lib/styles/design-tokens.scss';
24
- @import 'node_modules/@geoit/ui/src/lib/styles/theme.scss';
23
+ @import "node_modules/@geoit/ui/src/lib/styles/design-tokens.scss";
24
+ @import "node_modules/@geoit/ui/src/lib/styles/theme.scss";
25
25
  ```
26
26
 
27
27
  Use tokens in your CSS — do not hardcode brand colors or radius:
28
28
 
29
29
  - `var(--geo-color-primary-default)`
30
- - `var(--geo-radius)` (default **6px**)
30
+ - `var(--geo-radius)` (default **8px**; md/lg/xl for chips & popovers)
31
31
 
32
32
  ## Quick start
33
33
 
34
34
  ```ts
35
- import { Component } from '@angular/core';
36
- import { FormsModule } from '@angular/forms';
37
- import {
38
- GeoButtonComponent,
39
- GeoInputComponent,
40
- GeoFormModalComponent,
41
- GeoToastService,
42
- } from '@geoit/ui';
35
+ import { Component } from "@angular/core";
36
+ import { FormsModule } from "@angular/forms";
37
+ import { GeoButtonComponent, GeoInputComponent, GeoFormModalComponent, GeoToastService } from "@geoit/ui";
43
38
 
44
39
  @Component({
45
40
  standalone: true,
46
41
  imports: [FormsModule, GeoButtonComponent, GeoInputComponent, GeoFormModalComponent],
47
42
  template: `
48
- <geo-button appearance="primary" color="brand" icon="plus" (clicked)="open = true">
49
- Thêm mới
50
- </geo-button>
51
-
52
- <geo-form-modal
53
- [open]="open"
54
- title="Thêm mới"
55
- cancelText="Hủy bỏ"
56
- okText="Lưu"
57
- (openChange)="open = $event"
58
- (ok)="save()"
59
- >
43
+ <geo-button appearance="primary" color="brand" icon="plus" (clicked)="open = true"> Thêm mới </geo-button>
44
+
45
+ <geo-form-modal [open]="open" title="Thêm mới" cancelText="Hủy bỏ" okText="Lưu" (openChange)="open = $event" (ok)="save()">
60
46
  <geo-input label="Tên" [required]="true" [block]="true" [(ngModel)]="name"></geo-input>
61
47
  </geo-form-modal>
62
48
  `,
63
49
  })
64
50
  export class DemoComponent {
65
51
  open = false;
66
- name = '';
52
+ name = "";
67
53
 
68
54
  constructor(private toast: GeoToastService) {}
69
55
 
70
56
  save(): void {
71
- this.toast.success('Thành công!', 'Đã lưu.');
57
+ this.toast.success("Thành công!", "Đã lưu.");
72
58
  this.open = false;
73
59
  }
74
60
  }
@@ -76,33 +62,33 @@ export class DemoComponent {
76
62
 
77
63
  ## Common components
78
64
 
79
- | Need | Component | Example |
80
- |------|-----------|---------|
81
- | Button / CTA | `geo-button` | `<geo-button appearance="primary" color="brand">Lưu</geo-button>` |
82
- | Text field | `geo-input` | `<geo-input label="Họ tên" [(ngModel)]="name" [block]="true">` |
83
- | Select | `geo-select` | `<geo-select [options]="opts" [(ngModel)]="v" [block]="true">` |
84
- | Checkbox | `geo-checkbox` | `<geo-checkbox label="Đồng ý" [(checked)]="ok">` |
85
- | Radio | `geo-radio` | `<geo-radio [options]="opts" [(ngModel)]="v">` |
86
- | Form dialog | `geo-form-modal` | See Quick start |
87
- | Confirm delete | `geo-confirm-modal` | `[visible]` + `(confirm)` |
88
- | Steps in dialog | `geo-form-modal` + `geo-stepper` | See recipes |
89
- | Page title | `geo-page-title` | `<geo-page-title title="Chi tiết hồ sơ">` |
90
- | Breadcrumb | `geo-breadcrumb` | `[items]="[{ label, link? }]"` |
91
- | Toast | `GeoToastService` | `this.toast.success(title, message)` |
92
- | Alert | `geo-alert` | `type="success" \| "error" \| …` |
93
- | Status pill | `geo-status-tag` | `status="success" label="Đã duyệt"` |
94
- | Table | `geo-table` | `[columns]` + `[data]` + paging |
95
- | Upload | `geo-upload` | Drag-drop multi-file |
96
- | Typography | `geo-typography` | `variant="h3" \| "body" \| …` |
65
+ | Need | Component | Example |
66
+ | --------------- | -------------------------------- | ----------------------------------------------------------------- |
67
+ | Button / CTA | `geo-button` | `<geo-button appearance="primary" color="brand">Lưu</geo-button>` |
68
+ | Text field | `geo-input` | `<geo-input label="Họ tên" [(ngModel)]="name" [block]="true">` |
69
+ | Select | `geo-select` | `<geo-select [options]="opts" [(ngModel)]="v" [block]="true">` |
70
+ | Checkbox | `geo-checkbox` | `<geo-checkbox label="Đồng ý" [(checked)]="ok">` |
71
+ | Radio | `geo-radio` | `<geo-radio [options]="opts" [(ngModel)]="v">` |
72
+ | Form dialog | `geo-form-modal` | See Quick start |
73
+ | Confirm delete | `geo-confirm-modal` | `[visible]` + `(confirm)` |
74
+ | Steps in dialog | `geo-form-modal` + `geo-stepper` | See recipes |
75
+ | Page title | `geo-page-title` | `<geo-page-title title="Chi tiết hồ sơ">` |
76
+ | Breadcrumb | `geo-breadcrumb` | `[items]="[{ label, link? }]"` |
77
+ | Toast | `GeoToastService` | `this.toast.success(title, message)` |
78
+ | Alert | `geo-alert` | `type="success" \| "error" \| …` |
79
+ | Status pill | `geo-status-tag` | `status="success" label="Đã duyệt"` |
80
+ | Table | `geo-table` | `[columns]` + `[data]` + paging |
81
+ | Upload | `geo-upload` | Drag-drop multi-file |
82
+ | Typography | `geo-typography` | `variant="h3" \| "body" \| …` |
97
83
 
98
84
  ### Button API (quick)
99
85
 
100
- | Input | Values | Default |
101
- |-------|--------|---------|
102
- | `appearance` | `primary` \| `secondary` \| `tertiary` | `primary` |
103
- | `color` | `brand` \| `danger` \| `warning` \| `success` | `brand` |
104
- | `icon` / `iconPlacement` | Ant icon name; `start` \| `end` | `start` |
105
- | `disabled` / `iconOnly` / `active` | boolean | `false` |
86
+ | Input | Values | Default |
87
+ | ---------------------------------- | --------------------------------------------- | --------- |
88
+ | `appearance` | `primary` \| `secondary` \| `tertiary` | `primary` |
89
+ | `color` | `brand` \| `danger` \| `warning` \| `success` | `brand` |
90
+ | `icon` / `iconPlacement` | Ant icon name; `start` \| `end` | `start` |
91
+ | `disabled` / `iconOnly` / `active` | boolean | `false` |
106
92
 
107
93
  ```html
108
94
  <geo-button appearance="primary" color="brand" icon="plus">Thêm mới</geo-button>
@@ -133,13 +119,13 @@ this.toast.error('Lỗi!', 'Không thể lưu.');
133
119
 
134
120
  After install:
135
121
 
136
- | Path | Purpose |
137
- |------|---------|
138
- | `node_modules/@geoit/ui/ai/AGENTS.md` | Rules for humans & AI agents |
139
- | `node_modules/@geoit/ui/ai/README.md` | Component index |
140
- | `node_modules/@geoit/ui/ai/catalog.json` | Machine-readable catalog |
122
+ | Path | Purpose |
123
+ | ------------------------------------------- | ----------------------------------------------- |
124
+ | `node_modules/@geoit/ui/ai/AGENTS.md` | Rules for humans & AI agents |
125
+ | `node_modules/@geoit/ui/ai/README.md` | Component index |
126
+ | `node_modules/@geoit/ui/ai/catalog.json` | Machine-readable catalog |
141
127
  | `node_modules/@geoit/ui/ai/components/*.md` | **Per-component API** (inputs/outputs/examples) |
142
- | `node_modules/@geoit/ui/ai/recipes.md` | Copy-paste screen patterns |
128
+ | `node_modules/@geoit/ui/ai/recipes.md` | Copy-paste screen patterns |
143
129
 
144
130
  Open a component doc before using it, e.g.:
145
131
 
@@ -160,6 +146,7 @@ alwaysApply: true
160
146
  ---
161
147
 
162
148
  UI must use `@geoit/ui`. Before writing UI, read:
149
+
163
150
  - node_modules/@geoit/ui/ai/AGENTS.md
164
151
  - node_modules/@geoit/ui/ai/catalog.json
165
152
  - node_modules/@geoit/ui/ai/components/<selector>.md when needed
@@ -167,13 +154,13 @@ UI must use `@geoit/ui`. Before writing UI, read:
167
154
 
168
155
  ## Design tokens
169
156
 
170
- | Group | Examples |
171
- |-------|----------|
172
- | Primary | `--geo-color-primary-default` (`#9A4828`), hover, light, dark, background |
173
- | Neutral | `--geo-color-neutral-900` … `100`, white |
174
- | Semantic | success / error / warning / info |
175
- | Radius | `--geo-radius` (6px) |
176
- | Font | `--geo-font-family` |
157
+ | Group | Examples |
158
+ | -------- | ------------------------------------------------------------------------- |
159
+ | Primary | `--geo-color-primary-default` (`#9A4828`), hover, light, dark, background |
160
+ | Neutral | `--geo-color-neutral-900` … `100`, white |
161
+ | Semantic | success / error / warning / info |
162
+ | Radius | `--geo-radius` (8px) + `--geo-radius-{xs,sm,md,lg,xl,2xl,full}` |
163
+ | Font | `--geo-font-family` |
177
164
 
178
165
  TypeScript mirror: `geoColorTokens` from `@geoit/ui` (via styles/tokens export).
179
166
 
package/ai/AGENTS.md CHANGED
@@ -8,19 +8,22 @@ Instructions for AI coding agents (Cursor, Copilot, etc.) when building UI with
8
8
  2. **Do not** invent parallel wrappers or raw `nz-button` / `nz-input` / `nz-modal` when a `geo-*` equivalent exists.
9
9
  3. **Do not hardcode** brand colors or border-radius. Use tokens:
10
10
  - Colors: `var(--geo-color-*)` or `geoColorTokens` from `@geoit/ui`
11
- - Radius: `var(--geo-radius)` (default **6px**)
11
+ - Radius: `var(--geo-radius)` (default **8px**; scale: sm 6 / md 10 / lg 12 / xl 14)
12
12
  4. Before implementing a component, **read the full doc** `ai/components/<selector>.md` (Inputs/Outputs/Examples/Tips) and/or `ai/catalog.json`.
13
13
  5. Prefer **copying examples** from those docs — adapt labels/bindings only; do not invent props.
14
14
 
15
+ ## Library implementation (maintainers)
16
+
17
+ When changing `projects/geo-ui/src/lib/figma`:
18
+
19
+ - Angular **18**: `input()` / `output()` / `model()`, `OnPush`, `@if`/`@for`, `inject()`
20
+ - Do **not** add new `@Input` / `@Output` / `EventEmitter`
21
+ - After API changes: `npm run ai:docs`
22
+
15
23
  ## Import pattern
16
24
 
17
25
  ```ts
18
- import {
19
- GeoButtonComponent,
20
- GeoInputComponent,
21
- GeoFormModalComponent,
22
- GeoStepperComponent,
23
- } from '@geoit/ui';
26
+ import { GeoButtonComponent, GeoInputComponent, GeoFormModalComponent, GeoStepperComponent } from "@geoit/ui";
24
27
  ```
25
28
 
26
29
  Standalone consumers:
@@ -35,8 +38,8 @@ Standalone consumers:
35
38
  ## Styles (app once)
36
39
 
37
40
  ```scss
38
- @import 'node_modules/@geoit/ui/src/lib/styles/design-tokens.scss';
39
- @import 'node_modules/@geoit/ui/src/lib/styles/theme.scss';
41
+ @import "node_modules/@geoit/ui/src/lib/styles/design-tokens.scss";
42
+ @import "node_modules/@geoit/ui/src/lib/styles/theme.scss";
40
43
  ```
41
44
 
42
45
  ## Composition recipes
@@ -50,25 +53,32 @@ See [`recipes.md`](./recipes.md) for:
50
53
 
51
54
  ## Decision cheat-sheet
52
55
 
53
- | Need | Use |
54
- |------|-----|
55
- | CTA / actions | `geo-button` |
56
- | Text field | `geo-input` / `geo-textarea` |
57
- | Select | `geo-select` |
58
- | Exclusive options | `geo-radio` |
59
- | Checkbox | `geo-checkbox` |
60
- | Dialog form | `geo-form-modal` |
61
- | Confirm delete | `geo-confirm-modal` |
62
- | Multi-step in dialog | `geo-form-modal` + `geo-stepper` |
63
- | Multi-step full page | `geo-step-form-layout` |
64
- | Page heading | `geo-page-title` (+ `geo-breadcrumb`) |
65
- | Status pill | `geo-status-tag` |
66
- | Transient notice | `GeoToastService` / `geo-toast` |
67
- | Inline notice | `geo-alert` |
68
- | Upload drag-drop | `geo-upload` |
69
- | Compact file field | `geo-file-picker` |
70
- | Data grid | `geo-table` (+ toolbar/filter) |
71
- | Typography | `geo-typography` |
56
+ | Need | Use |
57
+ | -------------------- | ------------------------------------- |
58
+ | CTA / actions | `geo-button` |
59
+ | Text field | `geo-input` / `geo-textarea` |
60
+ | Select | `geo-select` |
61
+ | Exclusive options | `geo-radio` |
62
+ | Checkbox | `geo-checkbox` |
63
+ | Dialog form | `geo-form-modal` |
64
+ | Confirm delete | `geo-confirm-modal` |
65
+ | Multi-step in dialog | `geo-form-modal` + `geo-stepper` |
66
+ | Multi-step full page | `geo-step-form-layout` |
67
+ | App shell (sider+header) | `geo-layout` |
68
+ | Layout sidebar / header / footer | `geo-layout-sidebar` / `geo-layout-header` / `geo-layout-footer` |
69
+ | Page heading | `geo-page-title` (+ `geo-breadcrumb`) or `geo-page-header` |
70
+ | Dashboard KPI / chart | `geo-stat-card` / `geo-chart` / `geo-dashboard` |
71
+ | Login / forgot password | `geo-login` / `geo-forgot-password` |
72
+ | Feedback form | `geo-feedback-form` |
73
+ | Overlap analysis | `geo-overlap-result` |
74
+ | Empty region | `geo-empty-state` |
75
+ | Status pill | `geo-status-tag` |
76
+ | Transient notice | `GeoToastService` / `geo-toast` |
77
+ | Inline notice | `geo-alert` |
78
+ | Upload drag-drop | `geo-upload` |
79
+ | Compact file field | `geo-file-picker` |
80
+ | Data grid | `geo-table` (+ toolbar/filter) |
81
+ | Typography | `geo-typography` |
72
82
 
73
83
  ## Anti-patterns
74
84
 
package/ai/README.md CHANGED
@@ -10,21 +10,55 @@ Agent rules: [`AGENTS.md`](./AGENTS.md) · Recipes: [`recipes.md`](./recipes.md)
10
10
  | `geo-back-button` | navigation | Back navigation control (history or custom click). | [geo-back-button.md](./components/geo-back-button.md) |
11
11
  | `geo-breadcrumb` | navigation | Breadcrumb trail; last item active (primary). | [geo-breadcrumb.md](./components/geo-breadcrumb.md) |
12
12
  | `geo-button` | actions | Primary action button with brand/semantic colors and icons. | [geo-button.md](./components/geo-button.md) |
13
+ | `geo-chart` | other | GeoChartComponent | [geo-chart.md](./components/geo-chart.md) |
13
14
  | `geo-checkbox` | forms | Checkbox with label; bind with [(checked)] (not CVA/ngModel). | [geo-checkbox.md](./components/geo-checkbox.md) |
14
15
  | `geo-column-picker` | data | Column visibility picker for tables (optional persistence). | [geo-column-picker.md](./components/geo-column-picker.md) |
15
16
  | `geo-confirm-modal` | overlay | Confirm / danger dialog (destroy actions). | [geo-confirm-modal.md](./components/geo-confirm-modal.md) |
17
+ | `geo-dashboard` | other | GeoDashboardComponent | [geo-dashboard.md](./components/geo-dashboard.md) |
16
18
  | `geo-date-picker` | forms | Single date (optional time) picker. | [geo-date-picker.md](./components/geo-date-picker.md) |
17
19
  | `geo-date-range-picker` | forms | Start–end date range picker. | [geo-date-range-picker.md](./components/geo-date-range-picker.md) |
20
+ | `geo-empty-state` | other | GeoEmptyStateComponent | [geo-empty-state.md](./components/geo-empty-state.md) |
21
+ | `geo-feedback-form` | other | GeoFeedbackFormComponent | [geo-feedback-form.md](./components/geo-feedback-form.md) |
18
22
  | `geo-file-picker` | forms | Compact file input for forms (button + filename). | [geo-file-picker.md](./components/geo-file-picker.md) |
23
+ | `geo-forgot-password` | other | GeoForgotPasswordComponent | [geo-forgot-password.md](./components/geo-forgot-password.md) |
19
24
  | `geo-form-modal` | overlay | Form modal: fixed header/footer, scrollable body via ng-content. | [geo-form-modal.md](./components/geo-form-modal.md) |
20
25
  | `geo-icon` | display | Ant Design icon wrapper with GEO size/color tokens. | [geo-icon.md](./components/geo-icon.md) |
21
26
  | `geo-input` | forms | Text input with label, validation, icons; CVA/ngModel. | [geo-input.md](./components/geo-input.md) |
27
+ | `geo-layout` | layout | App shell composing sidebar + header + content + footer. | [geo-layout.md](./components/geo-layout.md) |
28
+ | `geo-layout-footer` | layout | Minimal layout footer with copyright text + content slot. | [geo-layout-footer.md](./components/geo-layout-footer.md) |
29
+ | `geo-layout-header` | layout | Soft top bar: toggle + breadcrumb + user/notification actions. | [geo-layout-header.md](./components/geo-layout-header.md) |
30
+ | `geo-layout-header-actions` | layout | Header actions: notification/subsystem icons + user chip with popovers. | [geo-layout-header-actions.md](./components/geo-layout-header-actions.md) |
31
+ | `geo-layout-sidebar` | layout | White sidebar: brand + recursive menu (collapse / mobile drawer). | [geo-layout-sidebar.md](./components/geo-layout-sidebar.md) |
32
+ | `geo-list-page` | other | GeoListPageComponent | [geo-list-page.md](./components/geo-list-page.md) |
33
+ | `geo-login` | other | GeoLoginComponent | [geo-login.md](./components/geo-login.md) |
34
+ | `geo-map` | map | OpenLayers map host with basemap, typed layers, and GeoMapController. | [geo-map.md](./components/geo-map.md) |
35
+ | `geo-map-admin-filter` | other | GeoMapAdminFilterComponent | [geo-map-admin-filter.md](./components/geo-map-admin-filter.md) |
36
+ | `geo-map-basemap-switcher` | other | GeoMapBasemapSwitcherComponent | [geo-map-basemap-switcher.md](./components/geo-map-basemap-switcher.md) |
37
+ | `geo-map-help` | other | GeoMapHelpComponent | [geo-map-help.md](./components/geo-map-help.md) |
38
+ | `geo-map-layer-card` | other | GeoMapLayerCardComponent | [geo-map-layer-card.md](./components/geo-map-layer-card.md) |
39
+ | `geo-map-layer-panel` | other | GeoMapLayerPanelComponent | [geo-map-layer-panel.md](./components/geo-map-layer-panel.md) |
40
+ | `geo-map-layers-drawer` | other | GeoMapLayersDrawerComponent | [geo-map-layers-drawer.md](./components/geo-map-layers-drawer.md) |
41
+ | `geo-map-legend` | other | GeoMapLegendComponent | [geo-map-legend.md](./components/geo-map-legend.md) |
42
+ | `geo-map-locate` | other | GeoMapLocateComponent | [geo-map-locate.md](./components/geo-map-locate.md) |
43
+ | `geo-map-location-chip` | other | GeoMapLocationChipComponent | [geo-map-location-chip.md](./components/geo-map-location-chip.md) |
44
+ | `geo-map-measure` | other | GeoMapMeasureComponent | [geo-map-measure.md](./components/geo-map-measure.md) |
45
+ | `geo-map-opacity` | other | GeoMapOpacityComponent | [geo-map-opacity.md](./components/geo-map-opacity.md) |
46
+ | `geo-map-parcel-popup` | other | GeoMapParcelPopupComponent | [geo-map-parcel-popup.md](./components/geo-map-parcel-popup.md) |
47
+ | `geo-map-search` | other | GeoMapSearchComponent | [geo-map-search.md](./components/geo-map-search.md) |
48
+ | `geo-map-shell` | other | GeoMapShellComponent | [geo-map-shell.md](./components/geo-map-shell.md) |
49
+ | `geo-map-snapshot` | other | GeoMapSnapshotComponent | [geo-map-snapshot.md](./components/geo-map-snapshot.md) |
50
+ | `geo-map-swipe` | other | GeoMapSwipeComponent | [geo-map-swipe.md](./components/geo-map-swipe.md) |
51
+ | `geo-map-toolbar` | other | GeoMapToolbarComponent | [geo-map-toolbar.md](./components/geo-map-toolbar.md) |
52
+ | `geo-map-zoom` | other | GeoMapZoomComponent | [geo-map-zoom.md](./components/geo-map-zoom.md) |
53
+ | `geo-overlap-result` | other | GeoOverlapResultComponent | [geo-overlap-result.md](./components/geo-overlap-result.md) |
54
+ | `geo-page-header` | other | GeoPageHeaderComponent | [geo-page-header.md](./components/geo-page-header.md) |
22
55
  | `geo-page-title` | display | Page title (uppercase) with short primary accent underline; uses geo-typography. | [geo-page-title.md](./components/geo-page-title.md) |
23
56
  | `geo-pagination` | navigation | Standalone pagination control. | [geo-pagination.md](./components/geo-pagination.md) |
24
57
  | `geo-radio` | forms | Radio group (horizontal/vertical or button style). | [geo-radio.md](./components/geo-radio.md) |
25
58
  | `geo-row-actions` | data | Row action icons/menu (edit, more, custom). | [geo-row-actions.md](./components/geo-row-actions.md) |
26
59
  | `geo-select` | forms | Select / multi-select dropdown. | [geo-select.md](./components/geo-select.md) |
27
60
  | `geo-slider` | forms | Numeric range slider. | [geo-slider.md](./components/geo-slider.md) |
61
+ | `geo-stat-card` | other | GeoStatCardComponent | [geo-stat-card.md](./components/geo-stat-card.md) |
28
62
  | `geo-status-tag` | display | Pill status tag with optional dot (success/error/warning/info/teal/…). | [geo-status-tag.md](./components/geo-status-tag.md) |
29
63
  | `geo-step-form-layout` | layout | Full-page multi-step form: vertical stepper + content card + footer actions. | [geo-step-form-layout.md](./components/geo-step-form-layout.md) |
30
64
  | `geo-stepper` | navigation | Steps indicator (horizontal default). Active=primary, completed=success+check. | [geo-stepper.md](./components/geo-stepper.md) |
@@ -39,6 +73,6 @@ Agent rules: [`AGENTS.md`](./AGENTS.md) · Recipes: [`recipes.md`](./recipes.md)
39
73
  | `geo-typography` | display | Text with GEO type scale (h1–tiny) and semantic colors. | [geo-typography.md](./components/geo-typography.md) |
40
74
  | `geo-upload` | forms | Drag-drop upload zone with progress list. | [geo-upload.md](./components/geo-upload.md) |
41
75
 
42
- Generated: 2026-07-27T01:57:41.109Z
76
+ Generated: 2026-08-24T03:07:52.099Z
43
77
 
44
78
  Regenerate: `npm run ai:docs`