@geoit/ui 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/AGENTS.md +12 -8
  2. package/README.md +94 -66
  3. package/ai/AGENTS.md +106 -16
  4. package/ai/README.md +35 -1
  5. package/ai/catalog.json +2855 -275
  6. package/ai/components/geo-alert.md +3 -3
  7. package/ai/components/geo-back-button.md +2 -2
  8. package/ai/components/geo-breadcrumb.md +1 -1
  9. package/ai/components/geo-button.md +3 -3
  10. package/ai/components/geo-chart.md +115 -0
  11. package/ai/components/geo-checkbox.md +4 -6
  12. package/ai/components/geo-column-picker.md +3 -3
  13. package/ai/components/geo-confirm-modal.md +4 -5
  14. package/ai/components/geo-dashboard.md +102 -0
  15. package/ai/components/geo-date-picker.md +5 -3
  16. package/ai/components/geo-date-range-picker.md +5 -3
  17. package/ai/components/geo-empty-state.md +75 -0
  18. package/ai/components/geo-feedback-form.md +97 -0
  19. package/ai/components/geo-file-picker.md +4 -2
  20. package/ai/components/geo-forgot-password.md +81 -0
  21. package/ai/components/geo-form-modal.md +9 -10
  22. package/ai/components/geo-icon.md +3 -3
  23. package/ai/components/geo-input.md +8 -6
  24. package/ai/components/geo-layout-footer.md +70 -0
  25. package/ai/components/geo-layout-header-actions.md +82 -0
  26. package/ai/components/geo-layout-header.md +89 -0
  27. package/ai/components/geo-layout-sidebar.md +86 -0
  28. package/ai/components/geo-layout.md +155 -0
  29. package/ai/components/geo-list-page.md +75 -0
  30. package/ai/components/geo-login.md +106 -0
  31. package/ai/components/geo-map-admin-filter.md +85 -0
  32. package/ai/components/geo-map-basemap-switcher.md +79 -0
  33. package/ai/components/geo-map-help.md +72 -0
  34. package/ai/components/geo-map-layer-card.md +73 -0
  35. package/ai/components/geo-map-layer-panel.md +75 -0
  36. package/ai/components/geo-map-layers-drawer.md +78 -0
  37. package/ai/components/geo-map-legend.md +74 -0
  38. package/ai/components/geo-map-locate.md +75 -0
  39. package/ai/components/geo-map-location-chip.md +71 -0
  40. package/ai/components/geo-map-measure.md +74 -0
  41. package/ai/components/geo-map-opacity.md +75 -0
  42. package/ai/components/geo-map-parcel-popup.md +84 -0
  43. package/ai/components/geo-map-search.md +89 -0
  44. package/ai/components/geo-map-shell.md +146 -0
  45. package/ai/components/geo-map-snapshot.md +75 -0
  46. package/ai/components/geo-map-swipe.md +73 -0
  47. package/ai/components/geo-map-toolbar.md +81 -0
  48. package/ai/components/geo-map-zoom.md +74 -0
  49. package/ai/components/geo-map.md +212 -0
  50. package/ai/components/geo-overlap-result.md +88 -0
  51. package/ai/components/geo-page-header.md +72 -0
  52. package/ai/components/geo-page-title.md +1 -1
  53. package/ai/components/geo-pagination.md +4 -7
  54. package/ai/components/geo-radio.md +3 -1
  55. package/ai/components/geo-row-actions.md +3 -3
  56. package/ai/components/geo-select.md +4 -2
  57. package/ai/components/geo-slider.md +6 -8
  58. package/ai/components/geo-stat-card.md +98 -0
  59. package/ai/components/geo-status-tag.md +2 -2
  60. package/ai/components/geo-step-form-layout.md +7 -8
  61. package/ai/components/geo-stepper.md +3 -4
  62. package/ai/components/geo-table-filter.md +4 -5
  63. package/ai/components/geo-table-pagination.md +4 -7
  64. package/ai/components/geo-table-toolbar.md +7 -7
  65. package/ai/components/geo-table.md +17 -20
  66. package/ai/components/geo-tabs.md +4 -6
  67. package/ai/components/geo-textarea.md +4 -2
  68. package/ai/components/geo-toast.md +4 -4
  69. package/ai/components/geo-tree.md +4 -6
  70. package/ai/components/geo-typography.md +1 -1
  71. package/ai/components/geo-upload.md +9 -10
  72. package/ai/mockup.html +1194 -0
  73. package/ai/recipes.md +184 -85
  74. package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +19 -36
  75. package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +14 -24
  76. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +8 -11
  77. package/esm2022/lib/figma/geo-button/geo-button.component.mjs +30 -59
  78. package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +88 -0
  79. package/esm2022/lib/figma/geo-chart/geo-chart.types.mjs +2 -0
  80. package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +11 -22
  81. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +22 -54
  82. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.component.mjs +49 -0
  83. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.types.mjs +2 -0
  84. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +48 -78
  85. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +47 -75
  86. package/esm2022/lib/figma/geo-empty-state/geo-empty-state.component.mjs +25 -0
  87. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.component.mjs +75 -0
  88. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.types.mjs +2 -0
  89. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +59 -81
  90. package/esm2022/lib/figma/geo-forgot-password/geo-forgot-password.component.mjs +51 -0
  91. package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +45 -112
  92. package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +22 -32
  93. package/esm2022/lib/figma/geo-input/geo-input.component.mjs +41 -70
  94. package/esm2022/lib/figma/geo-layout/footer/geo-layout-footer.component.mjs +18 -0
  95. package/esm2022/lib/figma/geo-layout/geo-layout-actions.directive.mjs +15 -0
  96. package/esm2022/lib/figma/geo-layout/geo-layout.component.mjs +79 -0
  97. package/esm2022/lib/figma/geo-layout/geo-layout.types.mjs +42 -0
  98. package/esm2022/lib/figma/geo-layout/header/geo-layout-header.component.mjs +60 -0
  99. package/esm2022/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.mjs +70 -0
  100. package/esm2022/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.mjs +90 -0
  101. package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +22 -0
  102. package/esm2022/lib/figma/geo-login/geo-login.component.mjs +58 -0
  103. package/esm2022/lib/figma/geo-login/geo-login.types.mjs +2 -0
  104. package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +52 -0
  105. package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +61 -0
  106. package/esm2022/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.mjs +26 -0
  107. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.mjs +24 -0
  108. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs +146 -0
  109. package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +37 -0
  110. package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +30 -0
  111. package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +72 -0
  112. package/esm2022/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.mjs +21 -0
  113. package/esm2022/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.mjs +375 -0
  114. package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +94 -0
  115. package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +136 -0
  116. package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +182 -0
  117. package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +577 -0
  118. package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +93 -0
  119. package/esm2022/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.mjs +129 -0
  120. package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +64 -0
  121. package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +295 -0
  122. package/esm2022/lib/figma/geo-map/geo-map-toolbar.icons.mjs +18 -0
  123. package/esm2022/lib/figma/geo-map/geo-map.component.mjs +144 -0
  124. package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +497 -0
  125. package/esm2022/lib/figma/geo-map/geo-map.controller.mjs +71 -0
  126. package/esm2022/lib/figma/geo-map/geo-map.types.mjs +2 -0
  127. package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +368 -0
  128. package/esm2022/lib/figma/geo-map/services/geo-map-projection.service.mjs +110 -0
  129. package/esm2022/lib/figma/geo-map/services/geo-map.service.mjs +540 -0
  130. package/esm2022/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.mjs +47 -0
  131. package/esm2022/lib/figma/geo-map/utils/geo-map-interactions.util.mjs +30 -0
  132. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.component.mjs +25 -0
  133. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.types.mjs +2 -0
  134. package/esm2022/lib/figma/geo-page-header/geo-page-header.component.mjs +23 -0
  135. package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +20 -35
  136. package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +13 -43
  137. package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +32 -52
  138. package/esm2022/lib/figma/geo-select/geo-select.component.mjs +46 -72
  139. package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +12 -28
  140. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.component.mjs +163 -0
  141. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.types.mjs +2 -0
  142. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +23 -27
  143. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +39 -96
  144. package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +18 -33
  145. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +14 -24
  146. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +18 -36
  147. package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +41 -98
  148. package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +40 -73
  149. package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +26 -56
  150. package/esm2022/lib/figma/geo-table/geo-table.component.mjs +110 -210
  151. package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +33 -63
  152. package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +28 -44
  153. package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +18 -39
  154. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +12 -40
  155. package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +49 -64
  156. package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +50 -101
  157. package/esm2022/lib/figma/index.mjs +50 -1
  158. package/esm2022/lib/styles/tokens.mjs +56 -24
  159. package/fesm2022/geoit-ui.mjs +5981 -1825
  160. package/fesm2022/geoit-ui.mjs.map +1 -1
  161. package/lib/figma/geo-alert/geo-alert.component.d.ts +10 -11
  162. package/lib/figma/geo-back-button/geo-back-button.component.d.ts +6 -7
  163. package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +2 -2
  164. package/lib/figma/geo-button/geo-button.component.d.ts +21 -17
  165. package/lib/figma/geo-chart/geo-chart.component.d.ts +40 -0
  166. package/lib/figma/geo-chart/geo-chart.types.d.ts +13 -0
  167. package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +6 -7
  168. package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +15 -17
  169. package/lib/figma/geo-dashboard/geo-dashboard.component.d.ts +29 -0
  170. package/lib/figma/geo-dashboard/geo-dashboard.types.d.ts +7 -0
  171. package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +26 -21
  172. package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +25 -20
  173. package/lib/figma/geo-empty-state/geo-empty-state.component.d.ts +17 -0
  174. package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +36 -0
  175. package/lib/figma/geo-feedback-form/geo-feedback-form.types.d.ts +8 -0
  176. package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +23 -20
  177. package/lib/figma/geo-forgot-password/geo-forgot-password.component.d.ts +24 -0
  178. package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +33 -35
  179. package/lib/figma/geo-icon/geo-icon.component.d.ts +7 -7
  180. package/lib/figma/geo-input/geo-input.component.d.ts +23 -21
  181. package/lib/figma/geo-layout/footer/geo-layout-footer.component.d.ts +10 -0
  182. package/lib/figma/geo-layout/geo-layout-actions.directive.d.ts +6 -0
  183. package/lib/figma/geo-layout/geo-layout.component.d.ts +48 -0
  184. package/lib/figma/geo-layout/geo-layout.types.d.ts +44 -0
  185. package/lib/figma/geo-layout/header/geo-layout-header.component.d.ts +31 -0
  186. package/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.d.ts +32 -0
  187. package/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.d.ts +34 -0
  188. package/lib/figma/geo-list-page/geo-list-page.component.d.ts +16 -0
  189. package/lib/figma/geo-login/geo-login.component.d.ts +27 -0
  190. package/lib/figma/geo-login/geo-login.types.d.ts +6 -0
  191. package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +28 -0
  192. package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +26 -0
  193. package/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.d.ts +20 -0
  194. package/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.d.ts +15 -0
  195. package/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.d.ts +40 -0
  196. package/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.d.ts +25 -0
  197. package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +18 -0
  198. package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.d.ts +24 -0
  199. package/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.d.ts +14 -0
  200. package/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.d.ts +49 -0
  201. package/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.d.ts +30 -0
  202. package/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.d.ts +44 -0
  203. package/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.d.ts +56 -0
  204. package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +103 -0
  205. package/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.d.ts +21 -0
  206. package/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.d.ts +33 -0
  207. package/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.d.ts +30 -0
  208. package/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.d.ts +67 -0
  209. package/lib/figma/geo-map/geo-map-toolbar.icons.d.ts +17 -0
  210. package/lib/figma/geo-map/geo-map.component.d.ts +53 -0
  211. package/lib/figma/geo-map/geo-map.constants.d.ts +73 -0
  212. package/lib/figma/geo-map/geo-map.controller.d.ts +49 -0
  213. package/lib/figma/geo-map/geo-map.types.d.ts +224 -0
  214. package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +42 -0
  215. package/lib/figma/geo-map/services/geo-map-projection.service.d.ts +32 -0
  216. package/lib/figma/geo-map/services/geo-map.service.d.ts +99 -0
  217. package/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.d.ts +13 -0
  218. package/lib/figma/geo-map/utils/geo-map-interactions.util.d.ts +9 -0
  219. package/lib/figma/geo-overlap-result/geo-overlap-result.component.d.ts +18 -0
  220. package/lib/figma/geo-overlap-result/geo-overlap-result.types.d.ts +7 -0
  221. package/lib/figma/geo-page-header/geo-page-header.component.d.ts +16 -0
  222. package/lib/figma/geo-page-title/geo-page-title.component.d.ts +9 -9
  223. package/lib/figma/geo-pagination/geo-pagination.component.d.ts +9 -14
  224. package/lib/figma/geo-radio/geo-radio.component.d.ts +17 -15
  225. package/lib/figma/geo-select/geo-select.component.d.ts +24 -19
  226. package/lib/figma/geo-slider/geo-slider.component.d.ts +7 -9
  227. package/lib/figma/geo-stat-card/geo-stat-card.component.d.ts +50 -0
  228. package/lib/figma/geo-stat-card/geo-stat-card.types.d.ts +11 -0
  229. package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +7 -7
  230. package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +27 -29
  231. package/lib/figma/geo-stepper/geo-stepper.component.d.ts +6 -8
  232. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +6 -7
  233. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +11 -12
  234. package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +21 -28
  235. package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +17 -20
  236. package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +17 -18
  237. package/lib/figma/geo-table/geo-table.component.d.ts +58 -62
  238. package/lib/figma/geo-tabs/geo-tabs.component.d.ts +14 -17
  239. package/lib/figma/geo-textarea/geo-textarea.component.d.ts +15 -13
  240. package/lib/figma/geo-toast/geo-toast.component.d.ts +11 -12
  241. package/lib/figma/geo-tree/geo-tree.component.d.ts +8 -13
  242. package/lib/figma/geo-typography/geo-typography.component.d.ts +13 -13
  243. package/lib/figma/geo-upload/geo-upload.component.d.ts +26 -28
  244. package/lib/figma/index.d.ts +49 -0
  245. package/lib/styles/tokens.d.ts +56 -23
  246. package/package.json +4 -2
  247. package/src/lib/figma/geo-map/assets/toolbar/fullscreen.svg +8 -0
  248. package/src/lib/figma/geo-map/assets/toolbar/home.svg +3 -0
  249. package/src/lib/figma/geo-map/assets/toolbar/layers.svg +3 -0
  250. package/src/lib/figma/geo-map/assets/toolbar/measure-area.svg +12 -0
  251. package/src/lib/figma/geo-map/assets/toolbar/measure-distance.svg +5 -0
  252. package/src/lib/figma/geo-map/assets/toolbar/pan.svg +13 -0
  253. package/src/lib/figma/geo-map/assets/toolbar/search.svg +3 -0
  254. package/src/lib/figma/geo-map/assets/toolbar/zoom-in.svg +3 -0
  255. package/src/lib/figma/geo-map/assets/toolbar/zoom-out.svg +5 -0
  256. package/src/lib/styles/design-tokens.scss +108 -35
  257. package/src/lib/styles/scrollbar.scss +2 -2
  258. package/src/lib/styles/theme.scss +1 -1
@@ -1,17 +1,16 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { GeoAlertType } from './geo-alert.types';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class GeoAlertComponent {
5
- type: GeoAlertType;
6
- title: string;
7
- message: string;
8
- closable: boolean;
9
- visible: boolean;
10
- showIcon: boolean;
11
- closed: EventEmitter<void>;
12
- get displayTitle(): string;
13
- get iconType(): string;
4
+ readonly type: import("@angular/core").InputSignal<GeoAlertType>;
5
+ readonly title: import("@angular/core").InputSignal<string>;
6
+ readonly message: import("@angular/core").InputSignal<string>;
7
+ readonly closable: import("@angular/core").InputSignal<boolean>;
8
+ readonly visible: import("@angular/core").ModelSignal<boolean>;
9
+ readonly showIcon: import("@angular/core").InputSignal<boolean>;
10
+ readonly closed: import("@angular/core").OutputEmitterRef<void>;
11
+ readonly displayTitle: import("@angular/core").Signal<string>;
12
+ readonly iconType: import("@angular/core").Signal<"check-circle" | "close-circle" | "exclamation-circle" | "info-circle">;
14
13
  onClose(): void;
15
14
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoAlertComponent, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoAlertComponent, "geo-alert", never, { "type": { "alias": "type"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; }, { "closed": "closed"; }, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoAlertComponent, "geo-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "closed": "closed"; }, never, never, true, never>;
17
16
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  /**
4
3
  * Nút quay lại dùng chung cho các page form/detail.
@@ -6,13 +5,13 @@ import * as i0 from "@angular/core";
6
5
  */
7
6
  export declare class GeoBackButtonComponent {
8
7
  private readonly location;
9
- ariaLabel: string;
10
- title: string;
11
- disabled: boolean;
8
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
9
+ readonly title: import("@angular/core").InputSignal<string>;
10
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
12
11
  /** `true` (mặc định): `Location.back()` — về trang trước trong history. */
13
- historyBack: boolean;
14
- clicked: EventEmitter<MouseEvent>;
12
+ readonly historyBack: import("@angular/core").InputSignal<boolean>;
13
+ readonly clicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
15
14
  onClick(event: MouseEvent): void;
16
15
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoBackButtonComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoBackButtonComponent, "geo-back-button", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "title": { "alias": "title"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "historyBack": { "alias": "historyBack"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoBackButtonComponent, "geo-back-button", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "historyBack": { "alias": "historyBack"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
18
17
  }
@@ -5,8 +5,8 @@ import * as i0 from "@angular/core";
5
5
  * Item thường: neutral gray; item active (cuối): primary + semibold.
6
6
  */
7
7
  export declare class GeoBreadcrumbComponent {
8
- items: GeoBreadcrumbItem[];
8
+ readonly items: import("@angular/core").InputSignal<GeoBreadcrumbItem[]>;
9
9
  isActive(item: GeoBreadcrumbItem, index: number): boolean;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoBreadcrumbComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoBreadcrumbComponent, "geo-breadcrumb", never, { "items": { "alias": "items"; "required": false; }; }, {}, never, never, true, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoBreadcrumbComponent, "geo-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
12
  }
@@ -1,27 +1,31 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { GeoButtonAppearance, GeoButtonColor, GeoButtonTooltipPlacement } from './geo-button.types';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class GeoButtonComponent {
5
- appearance: GeoButtonAppearance;
6
- color: GeoButtonColor;
7
- icon?: string;
8
- iconTheme: 'outline' | 'fill' | 'twotone';
4
+ readonly appearance: import("@angular/core").InputSignal<GeoButtonAppearance>;
5
+ readonly color: import("@angular/core").InputSignal<GeoButtonColor>;
6
+ readonly icon: import("@angular/core").InputSignal<string | undefined>;
7
+ readonly iconTheme: import("@angular/core").InputSignal<"outline" | "fill" | "twotone">;
9
8
  /** Vị trí icon: `start` (trái) hoặc `end` (phải). */
10
- iconPlacement: 'start' | 'end';
11
- iconOnly: boolean;
12
- type: 'button' | 'submit';
13
- disabled: boolean;
9
+ readonly iconPlacement: import("@angular/core").InputSignal<"start" | "end">;
10
+ readonly iconOnly: import("@angular/core").InputSignal<boolean>;
11
+ readonly type: import("@angular/core").InputSignal<"button" | "submit">;
12
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
14
13
  /** Tooltip Ant Design (`nz-tooltip`). Ưu tiên hơn `title` native. */
15
- tooltip: string;
16
- tooltipPlacement: GeoButtonTooltipPlacement;
14
+ readonly tooltip: import("@angular/core").InputSignal<string>;
15
+ readonly tooltipPlacement: import("@angular/core").InputSignal<GeoButtonTooltipPlacement>;
17
16
  /** Trạng thái active (vd. toolbar toggle đang bật). */
18
- active: boolean;
17
+ readonly active: import("@angular/core").InputSignal<boolean>;
19
18
  /** Native `title` — fallback khi không set `tooltip`. */
20
- title: string;
21
- clicked: EventEmitter<MouseEvent>;
22
- get tooltipTitle(): string;
23
- get classNames(): Record<string, boolean>;
19
+ readonly title: import("@angular/core").InputSignal<string>;
20
+ readonly clicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
21
+ readonly tooltipTitle: import("@angular/core").Signal<string>;
22
+ readonly classNames: import("@angular/core").Signal<{
23
+ [x: string]: boolean;
24
+ 'geo-button--icon-only': boolean;
25
+ 'geo-button--icon-end': boolean;
26
+ 'geo-button--active': boolean;
27
+ }>;
24
28
  onClick(event: MouseEvent): void;
25
29
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoButtonComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoButtonComponent, "geo-button", never, { "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconTheme": { "alias": "iconTheme"; "required": false; }; "iconPlacement": { "alias": "iconPlacement"; "required": false; }; "iconOnly": { "alias": "iconOnly"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; }; "active": { "alias": "active"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoButtonComponent, "geo-button", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconTheme": { "alias": "iconTheme"; "required": false; "isSignal": true; }; "iconPlacement": { "alias": "iconPlacement"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
27
31
  }
@@ -0,0 +1,40 @@
1
+ import type { GeoChartDatum, GeoChartSegmentClick, GeoChartSort, GeoChartType } from './geo-chart.types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Lightweight SVG charts for dashboard / thống kê (TCQH.2–3).
5
+ * No chart-library peer dependency — host binds data only.
6
+ *
7
+ * @summary Biểu đồ cột / donut thuần SVG cho trang thống kê.
8
+ * @whenToUse Dashboard diện tích theo xã, tỷ lệ thửa lệch mục đích.
9
+ * @doNotUseWhen Heavy BI dashboards needing zoom/brush — use a chart lib in the app.
10
+ */
11
+ export declare class GeoChartComponent {
12
+ readonly type: import("@angular/core").InputSignal<GeoChartType>;
13
+ readonly title: import("@angular/core").InputSignal<string>;
14
+ readonly data: import("@angular/core").InputSignal<GeoChartDatum[]>;
15
+ readonly height: import("@angular/core").InputSignal<number>;
16
+ readonly showLegend: import("@angular/core").InputSignal<boolean>;
17
+ readonly showSort: import("@angular/core").InputSignal<boolean>;
18
+ readonly sort: import("@angular/core").ModelSignal<GeoChartSort>;
19
+ readonly emptyText: import("@angular/core").InputSignal<string>;
20
+ readonly unit: import("@angular/core").InputSignal<string>;
21
+ readonly segmentClick: import("@angular/core").OutputEmitterRef<GeoChartSegmentClick>;
22
+ readonly sortChange: import("@angular/core").OutputEmitterRef<GeoChartSort>;
23
+ readonly sortedData: import("@angular/core").Signal<GeoChartDatum[]>;
24
+ readonly maxValue: import("@angular/core").Signal<number>;
25
+ readonly total: import("@angular/core").Signal<number>;
26
+ readonly donutSegments: import("@angular/core").Signal<{
27
+ datum: GeoChartDatum;
28
+ index: number;
29
+ color: string;
30
+ dasharray: string;
31
+ dashoffset: number;
32
+ percent: number;
33
+ }[]>;
34
+ colorOf(item: GeoChartDatum, index: number): string;
35
+ barWidth(value: number): string;
36
+ setSort(next: GeoChartSort): void;
37
+ onSegment(datum: GeoChartDatum, index: number): void;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoChartComponent, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoChartComponent, "geo-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showSort": { "alias": "showSort"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "segmentClick": "segmentClick"; "sortChange": "sortChange"; }, never, never, true, never>;
40
+ }
@@ -0,0 +1,13 @@
1
+ export type GeoChartType = 'bar' | 'donut';
2
+ export type GeoChartSort = 'none' | 'asc' | 'desc';
3
+ export interface GeoChartDatum {
4
+ id?: string;
5
+ label: string;
6
+ value: number;
7
+ /** Optional CSS color; prefer design tokens when possible. */
8
+ color?: string;
9
+ }
10
+ export interface GeoChartSegmentClick {
11
+ datum: GeoChartDatum;
12
+ index: number;
13
+ }
@@ -1,12 +1,11 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class GeoCheckboxComponent {
4
- label: string;
5
- checked: boolean;
6
- disabled: boolean;
7
- indeterminate: boolean;
8
- checkedChange: EventEmitter<boolean>;
3
+ readonly label: import("@angular/core").InputSignal<string>;
4
+ /** Two-way: `[(checked)]`. */
5
+ readonly checked: import("@angular/core").ModelSignal<boolean>;
6
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
7
+ readonly indeterminate: import("@angular/core").InputSignal<boolean>;
9
8
  onChange(value: boolean): void;
10
9
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoCheckboxComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoCheckboxComponent, "geo-checkbox", never, { "label": { "alias": "label"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoCheckboxComponent, "geo-checkbox", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, never, true, never>;
12
11
  }
@@ -1,24 +1,22 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class GeoConfirmModalComponent {
4
- visible: boolean;
5
- title: string;
6
- message: string;
7
- highlight: string;
8
- description: string;
9
- cancelText: string;
10
- confirmText: string;
11
- confirmLoading: boolean;
12
- width: number | string;
13
- maskClosable: boolean;
14
- closable: boolean;
15
- visibleChange: EventEmitter<boolean>;
16
- confirm: EventEmitter<void>;
17
- cancel: EventEmitter<void>;
18
- get hasDefaultBody(): boolean;
3
+ readonly visible: import("@angular/core").ModelSignal<boolean>;
4
+ readonly title: import("@angular/core").InputSignal<string>;
5
+ readonly message: import("@angular/core").InputSignal<string>;
6
+ readonly highlight: import("@angular/core").InputSignal<string>;
7
+ readonly description: import("@angular/core").InputSignal<string>;
8
+ readonly cancelText: import("@angular/core").InputSignal<string>;
9
+ readonly confirmText: import("@angular/core").InputSignal<string>;
10
+ readonly confirmLoading: import("@angular/core").InputSignal<boolean>;
11
+ readonly width: import("@angular/core").InputSignal<string | number>;
12
+ readonly maskClosable: import("@angular/core").InputSignal<boolean>;
13
+ readonly closable: import("@angular/core").InputSignal<boolean>;
14
+ readonly confirm: import("@angular/core").OutputEmitterRef<void>;
15
+ readonly cancel: import("@angular/core").OutputEmitterRef<void>;
16
+ readonly hasDefaultBody: import("@angular/core").Signal<boolean>;
19
17
  onVisibleChange(visible: boolean): void;
20
18
  onCancel(): void;
21
19
  onConfirm(): void;
22
20
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoConfirmModalComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoConfirmModalComponent, "geo-confirm-modal", never, { "visible": { "alias": "visible"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "highlight": { "alias": "highlight"; "required": false; }; "description": { "alias": "description"; "required": false; }; "cancelText": { "alias": "cancelText"; "required": false; }; "confirmText": { "alias": "confirmText"; "required": false; }; "confirmLoading": { "alias": "confirmLoading"; "required": false; }; "width": { "alias": "width"; "required": false; }; "maskClosable": { "alias": "maskClosable"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; }, { "visibleChange": "visibleChange"; "confirm": "confirm"; "cancel": "cancel"; }, never, ["*"], true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoConfirmModalComponent, "geo-confirm-modal", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "highlight": { "alias": "highlight"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "cancelText": { "alias": "cancelText"; "required": false; "isSignal": true; }; "confirmText": { "alias": "confirmText"; "required": false; "isSignal": true; }; "confirmLoading": { "alias": "confirmLoading"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "maskClosable": { "alias": "maskClosable"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "confirm": "confirm"; "cancel": "cancel"; }, never, ["*"], true, never>;
24
22
  }
@@ -0,0 +1,29 @@
1
+ import type { GeoChartDatum, GeoChartSegmentClick } from '../geo-chart/geo-chart.types';
2
+ import type { GeoDateRangeValue } from '../geo-date-range-picker/geo-date-range-picker.types';
3
+ import type { GeoBreadcrumbItem } from '../geo-breadcrumb/geo-breadcrumb.types';
4
+ import type { GeoStatCardItem } from '../geo-stat-card/geo-stat-card.types';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Dashboard page composition (TCQH.1–3).
8
+ *
9
+ * @summary Trang dashboard: bộ lọc thời gian, KPI cards, biểu đồ cột & donut.
10
+ * @whenToUse Màn Dashboard thống kê tổng quan cho chuyên viên.
11
+ * @doNotUseWhen Full custom analytics layouts — compose primitives yourself.
12
+ */
13
+ export declare class GeoDashboardComponent {
14
+ readonly title: import("@angular/core").InputSignal<string>;
15
+ readonly breadcrumb: import("@angular/core").InputSignal<GeoBreadcrumbItem[]>;
16
+ readonly stats: import("@angular/core").InputSignal<GeoStatCardItem[]>;
17
+ readonly wardChartTitle: import("@angular/core").InputSignal<string>;
18
+ readonly wardData: import("@angular/core").InputSignal<GeoChartDatum[]>;
19
+ readonly mismatchChartTitle: import("@angular/core").InputSignal<string>;
20
+ readonly mismatchData: import("@angular/core").InputSignal<GeoChartDatum[]>;
21
+ readonly wardUnit: import("@angular/core").InputSignal<string>;
22
+ readonly period: import("@angular/core").ModelSignal<GeoDateRangeValue>;
23
+ readonly periodChange: import("@angular/core").OutputEmitterRef<GeoDateRangeValue>;
24
+ readonly mismatchSegmentClick: import("@angular/core").OutputEmitterRef<GeoChartSegmentClick>;
25
+ readonly wardSegmentClick: import("@angular/core").OutputEmitterRef<GeoChartSegmentClick>;
26
+ onPeriodChange(value: GeoDateRangeValue): void;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoDashboardComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoDashboardComponent, "geo-dashboard", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; "stats": { "alias": "stats"; "required": false; "isSignal": true; }; "wardChartTitle": { "alias": "wardChartTitle"; "required": false; "isSignal": true; }; "wardData": { "alias": "wardData"; "required": false; "isSignal": true; }; "mismatchChartTitle": { "alias": "mismatchChartTitle"; "required": false; "isSignal": true; }; "mismatchData": { "alias": "mismatchData"; "required": false; "isSignal": true; }; "wardUnit": { "alias": "wardUnit"; "required": false; "isSignal": true; }; "period": { "alias": "period"; "required": false; "isSignal": true; }; }, { "period": "periodChange"; "periodChange": "periodChange"; "mismatchSegmentClick": "mismatchSegmentClick"; "wardSegmentClick": "wardSegmentClick"; }, never, ["*"], true, never>;
29
+ }
@@ -0,0 +1,7 @@
1
+ import type { GeoStatCardItem } from '../geo-stat-card/geo-stat-card.types';
2
+ import type { GeoChartDatum } from '../geo-chart/geo-chart.types';
3
+ import type { GeoDateRangeValue } from '../geo-date-range-picker/geo-date-range-picker.types';
4
+ export interface GeoDashboardPeriodChange {
5
+ range: GeoDateRangeValue | null;
6
+ }
7
+ export type { GeoStatCardItem, GeoChartDatum };
@@ -1,35 +1,40 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { ControlValueAccessor } from '@angular/forms';
3
2
  import { GeoDatePickerMode, GeoDatePickerSize } from './geo-date-picker.types';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class GeoDatePickerComponent implements ControlValueAccessor {
6
- label: string;
7
- placeholder: string;
8
- format: string;
9
- mode: GeoDatePickerMode;
10
- size: GeoDatePickerSize;
11
- disabled: boolean;
12
- required: boolean;
13
- error: boolean;
14
- errorMessage: string;
15
- allowClear: boolean;
16
- showToday: boolean;
17
- showTime: boolean;
18
- block: boolean;
19
- width?: number | string;
20
- disabledDate?: (current: Date) => boolean;
21
- valueChange: EventEmitter<Date | null>;
5
+ private readonly cdr;
6
+ readonly label: import("@angular/core").InputSignal<string>;
7
+ readonly placeholder: import("@angular/core").InputSignal<string>;
8
+ readonly format: import("@angular/core").InputSignal<string>;
9
+ readonly mode: import("@angular/core").InputSignal<GeoDatePickerMode>;
10
+ readonly size: import("@angular/core").InputSignal<GeoDatePickerSize>;
11
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
12
+ readonly required: import("@angular/core").InputSignal<boolean>;
13
+ readonly error: import("@angular/core").InputSignal<boolean>;
14
+ readonly errorMessage: import("@angular/core").InputSignal<string>;
15
+ readonly allowClear: import("@angular/core").InputSignal<boolean>;
16
+ readonly showToday: import("@angular/core").InputSignal<boolean>;
17
+ readonly showTime: import("@angular/core").InputSignal<boolean>;
18
+ readonly block: import("@angular/core").InputSignal<boolean>;
19
+ readonly width: import("@angular/core").InputSignal<string | number | undefined>;
20
+ readonly disabledDate: import("@angular/core").InputSignal<((current: Date) => boolean) | undefined>;
21
+ readonly valueChange: import("@angular/core").OutputEmitterRef<Date | null>;
22
22
  readonly errorMessageId: string;
23
- value: Date | null;
23
+ private readonly disabledFromCva;
24
+ readonly isDisabled: import("@angular/core").Signal<boolean>;
25
+ protected readonly value: import("@angular/core").WritableSignal<Date | null>;
24
26
  private onChange;
25
27
  private onTouched;
26
- get hostWidth(): string | null;
27
- get controlClassNames(): Record<string, boolean>;
28
+ readonly hostWidth: import("@angular/core").Signal<string | null>;
29
+ readonly controlClassNames: import("@angular/core").Signal<{
30
+ [x: string]: boolean;
31
+ 'geo-date-picker': boolean;
32
+ }>;
28
33
  onValueChange(value: Date | null): void;
29
34
  writeValue(value: Date | null): void;
30
35
  registerOnChange(fn: (value: Date | null) => void): void;
31
36
  registerOnTouched(fn: () => void): void;
32
37
  setDisabledState(isDisabled: boolean): void;
33
38
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoDatePickerComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoDatePickerComponent, "geo-date-picker", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "format": { "alias": "format"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "showToday": { "alias": "showToday"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "block": { "alias": "block"; "required": false; }; "width": { "alias": "width"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoDatePickerComponent, "geo-date-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "allowClear": { "alias": "allowClear"; "required": false; "isSignal": true; }; "showToday": { "alias": "showToday"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "disabledDate": { "alias": "disabledDate"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
35
40
  }
@@ -1,34 +1,39 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { ControlValueAccessor } from '@angular/forms';
3
2
  import { GeoDateRangeSize, GeoDateRangeValue } from './geo-date-range-picker.types';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class GeoDateRangePickerComponent implements ControlValueAccessor {
6
- label: string;
7
- placeholder: [string, string];
8
- format: string;
9
- size: GeoDateRangeSize;
10
- disabled: boolean;
11
- required: boolean;
12
- error: boolean;
13
- errorMessage: string;
14
- allowClear: boolean;
15
- showTime: boolean;
16
- block: boolean;
17
- width?: number | string;
18
- disabledDate?: (current: Date) => boolean;
19
- separator: string;
20
- valueChange: EventEmitter<GeoDateRangeValue>;
5
+ private readonly cdr;
6
+ readonly label: import("@angular/core").InputSignal<string>;
7
+ readonly placeholder: import("@angular/core").InputSignal<[string, string]>;
8
+ readonly format: import("@angular/core").InputSignal<string>;
9
+ readonly size: import("@angular/core").InputSignal<GeoDateRangeSize>;
10
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
11
+ readonly required: import("@angular/core").InputSignal<boolean>;
12
+ readonly error: import("@angular/core").InputSignal<boolean>;
13
+ readonly errorMessage: import("@angular/core").InputSignal<string>;
14
+ readonly allowClear: import("@angular/core").InputSignal<boolean>;
15
+ readonly showTime: import("@angular/core").InputSignal<boolean>;
16
+ readonly block: import("@angular/core").InputSignal<boolean>;
17
+ readonly width: import("@angular/core").InputSignal<string | number | undefined>;
18
+ readonly disabledDate: import("@angular/core").InputSignal<((current: Date) => boolean) | undefined>;
19
+ readonly separator: import("@angular/core").InputSignal<string>;
20
+ readonly valueChange: import("@angular/core").OutputEmitterRef<GeoDateRangeValue>;
21
21
  readonly errorMessageId: string;
22
- value: GeoDateRangeValue;
22
+ private readonly disabledFromCva;
23
+ readonly isDisabled: import("@angular/core").Signal<boolean>;
24
+ protected readonly value: import("@angular/core").WritableSignal<GeoDateRangeValue>;
23
25
  private onChange;
24
26
  private onTouched;
25
- get hostWidth(): string | null;
26
- get controlClassNames(): Record<string, boolean>;
27
+ readonly hostWidth: import("@angular/core").Signal<string | null>;
28
+ readonly controlClassNames: import("@angular/core").Signal<{
29
+ [x: string]: boolean;
30
+ 'geo-date-range-picker': boolean;
31
+ }>;
27
32
  onValueChange(value: GeoDateRangeValue): void;
28
33
  writeValue(value: GeoDateRangeValue): void;
29
34
  registerOnChange(fn: (value: GeoDateRangeValue) => void): void;
30
35
  registerOnTouched(fn: () => void): void;
31
36
  setDisabledState(isDisabled: boolean): void;
32
37
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoDateRangePickerComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoDateRangePickerComponent, "geo-date-range-picker", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "format": { "alias": "format"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "block": { "alias": "block"; "required": false; }; "width": { "alias": "width"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoDateRangePickerComponent, "geo-date-range-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "allowClear": { "alias": "allowClear"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "disabledDate": { "alias": "disabledDate"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
34
39
  }
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Empty / no-data placeholder for list & chart regions.
4
+ *
5
+ * @summary Trạng thái trống khi chưa có dữ liệu.
6
+ * @whenToUse Bảng thống kê, kết quả tra cứu, biểu đồ không có data.
7
+ * @doNotUseWhen Error banners — use geo-alert.
8
+ */
9
+ export declare class GeoEmptyStateComponent {
10
+ readonly title: import("@angular/core").InputSignal<string>;
11
+ readonly description: import("@angular/core").InputSignal<string>;
12
+ readonly icon: import("@angular/core").InputSignal<string>;
13
+ readonly actionLabel: import("@angular/core").InputSignal<string>;
14
+ readonly actionClick: import("@angular/core").OutputEmitterRef<void>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoEmptyStateComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoEmptyStateComponent, "geo-empty-state", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; }, { "actionClick": "actionClick"; }, never, never, true, never>;
17
+ }
@@ -0,0 +1,36 @@
1
+ import type { GeoFeedbackPayload } from './geo-feedback-form.types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Citizen feedback / kiến nghị form (STT 26).
5
+ *
6
+ * @summary Form gửi phản ánh kiến nghị (người gửi + nội dung).
7
+ * @whenToUse Popup / trang Phản ánh kiến nghị từ cổng tra cứu.
8
+ * @doNotUseWhen Specialist reply inbox — use geo-table + reply modal.
9
+ */
10
+ export declare class GeoFeedbackFormComponent {
11
+ readonly title: import("@angular/core").InputSignal<string>;
12
+ /** Mô tả ngắn dưới tiêu đề — giúp người dân hiểu quy trình xử lý. */
13
+ readonly description: import("@angular/core").InputSignal<string>;
14
+ readonly maxLength: import("@angular/core").InputSignal<number>;
15
+ readonly loading: import("@angular/core").InputSignal<boolean>;
16
+ /** Ẩn nút Hủy khi form dùng trên trang riêng (không phải dialog). */
17
+ readonly showCancel: import("@angular/core").InputSignal<boolean>;
18
+ /** Form chiếm hết chiều rộng/cao vùng chứa (trang full content). */
19
+ readonly fill: import("@angular/core").InputSignal<boolean>;
20
+ readonly submitLabel: import("@angular/core").InputSignal<string>;
21
+ readonly cancelLabel: import("@angular/core").InputSignal<string>;
22
+ readonly senderName: import("@angular/core").ModelSignal<string>;
23
+ readonly content: import("@angular/core").ModelSignal<string>;
24
+ readonly submittedFeedback: import("@angular/core").OutputEmitterRef<GeoFeedbackPayload>;
25
+ readonly cancelled: import("@angular/core").OutputEmitterRef<void>;
26
+ readonly submitted: import("@angular/core").WritableSignal<boolean>;
27
+ readonly usedChars: import("@angular/core").Signal<number>;
28
+ readonly remaining: import("@angular/core").Signal<number>;
29
+ readonly counterTone: import("@angular/core").Signal<"warning" | "danger" | "default">;
30
+ readonly senderError: import("@angular/core").Signal<boolean>;
31
+ readonly contentEmptyError: import("@angular/core").Signal<boolean>;
32
+ submit(): void;
33
+ reset(): void;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoFeedbackFormComponent, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoFeedbackFormComponent, "geo-feedback-form", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showCancel": { "alias": "showCancel"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "senderName": { "alias": "senderName"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; }, { "senderName": "senderNameChange"; "content": "contentChange"; "submittedFeedback": "submittedFeedback"; "cancelled": "cancelled"; }, never, never, true, never>;
36
+ }
@@ -0,0 +1,8 @@
1
+ export interface GeoFeedbackPayload {
2
+ senderName: string;
3
+ content: string;
4
+ }
5
+ export interface GeoFeedbackReplyPayload {
6
+ id: string;
7
+ reply: string;
8
+ }
@@ -1,32 +1,35 @@
1
- import { ElementRef, EventEmitter } from '@angular/core';
1
+ import { ElementRef } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class GeoFilePickerComponent implements ControlValueAccessor {
5
- fileInput?: ElementRef<HTMLInputElement>;
6
- label: string;
7
- placeholder: string;
8
- buttonText: string;
9
- required: boolean;
10
- disabled: boolean;
11
- accept: string;
12
- multiple: boolean;
13
- error: boolean;
14
- errorMessage: string;
15
- block: boolean;
16
- width?: number | string;
5
+ private readonly cdr;
6
+ readonly fileInput: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
7
+ readonly label: import("@angular/core").InputSignal<string>;
8
+ readonly placeholder: import("@angular/core").InputSignal<string>;
9
+ readonly buttonText: import("@angular/core").InputSignal<string>;
10
+ readonly required: import("@angular/core").InputSignal<boolean>;
11
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
12
+ readonly accept: import("@angular/core").InputSignal<string>;
13
+ readonly multiple: import("@angular/core").InputSignal<boolean>;
14
+ readonly error: import("@angular/core").InputSignal<boolean>;
15
+ readonly errorMessage: import("@angular/core").InputSignal<string>;
16
+ readonly block: import("@angular/core").InputSignal<boolean>;
17
+ readonly width: import("@angular/core").InputSignal<string | number | undefined>;
17
18
  /**
18
19
  * Tên file đã upload (server) — hiện khi chưa có File local trong CVA.
19
20
  * Dùng cho flow: chọn file → upload → giữ tên từ API.
20
21
  */
21
- selectedName: string;
22
- fileChange: EventEmitter<File | File[] | null>;
22
+ readonly selectedName: import("@angular/core").InputSignal<string>;
23
+ readonly fileChange: import("@angular/core").OutputEmitterRef<File | File[] | null>;
23
24
  readonly errorMessageId: string;
24
- value: File | File[] | null;
25
+ private readonly disabledFromCva;
26
+ readonly isDisabled: import("@angular/core").Signal<boolean>;
27
+ protected readonly value: import("@angular/core").WritableSignal<File | File[] | null>;
25
28
  private onChange;
26
29
  private onTouched;
27
- get hostWidth(): string | null;
28
- get displayValue(): string;
29
- get hasValue(): boolean;
30
+ readonly hostWidth: import("@angular/core").Signal<string | null>;
31
+ readonly displayValue: import("@angular/core").Signal<string>;
32
+ readonly hasValue: import("@angular/core").Signal<boolean>;
30
33
  openFilePicker(): void;
31
34
  onFileSelected(event: Event): void;
32
35
  private setValue;
@@ -35,5 +38,5 @@ export declare class GeoFilePickerComponent implements ControlValueAccessor {
35
38
  registerOnTouched(fn: () => void): void;
36
39
  setDisabledState(isDisabled: boolean): void;
37
40
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoFilePickerComponent, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoFilePickerComponent, "geo-file-picker", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "block": { "alias": "block"; "required": false; }; "width": { "alias": "width"; "required": false; }; "selectedName": { "alias": "selectedName"; "required": false; }; }, { "fileChange": "fileChange"; }, never, never, true, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoFilePickerComponent, "geo-file-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "buttonText": { "alias": "buttonText"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; }, { "fileChange": "fileChange"; }, never, never, true, never>;
39
42
  }
@@ -0,0 +1,24 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Forgot password form (STT 36).
4
+ *
5
+ * @summary Form quên mật khẩu — nhập email để lấy lại mật khẩu.
6
+ * @whenToUse Màn Quên mật khẩu từ đăng nhập.
7
+ * @doNotUseWhen Inline password reset inside profile settings.
8
+ */
9
+ export declare class GeoForgotPasswordComponent {
10
+ readonly title: import("@angular/core").InputSignal<string>;
11
+ readonly subtitle: import("@angular/core").InputSignal<string>;
12
+ readonly loading: import("@angular/core").InputSignal<boolean>;
13
+ readonly errorMessage: import("@angular/core").InputSignal<string>;
14
+ readonly successMessage: import("@angular/core").InputSignal<string>;
15
+ readonly email: import("@angular/core").ModelSignal<string>;
16
+ readonly submitEmail: import("@angular/core").OutputEmitterRef<string>;
17
+ readonly backToLogin: import("@angular/core").OutputEmitterRef<void>;
18
+ readonly submitted: import("@angular/core").WritableSignal<boolean>;
19
+ private readonly emailPattern;
20
+ emailInvalid(): boolean;
21
+ submit(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeoForgotPasswordComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoForgotPasswordComponent, "geo-forgot-password", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "successMessage": { "alias": "successMessage"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; }, { "email": "emailChange"; "submitEmail": "submitEmail"; "backToLogin": "backToLogin"; }, never, never, true, never>;
24
+ }