@geoit/ui 0.0.2 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +12 -8
- package/README.md +140 -17
- package/ai/AGENTS.md +43 -32
- package/ai/README.md +36 -2
- package/ai/catalog.json +5585 -437
- package/ai/components/geo-alert.md +75 -21
- package/ai/components/geo-back-button.md +64 -18
- package/ai/components/geo-breadcrumb.md +71 -12
- package/ai/components/geo-button.md +90 -27
- package/ai/components/geo-chart.md +103 -0
- package/ai/components/geo-checkbox.md +67 -20
- package/ai/components/geo-column-picker.md +91 -18
- package/ai/components/geo-confirm-modal.md +92 -27
- package/ai/components/geo-dashboard.md +91 -0
- package/ai/components/geo-date-picker.md +105 -29
- package/ai/components/geo-date-range-picker.md +101 -28
- package/ai/components/geo-empty-state.md +75 -0
- package/ai/components/geo-feedback-form.md +97 -0
- package/ai/components/geo-file-picker.md +99 -26
- package/ai/components/geo-forgot-password.md +78 -0
- package/ai/components/geo-form-modal.md +111 -44
- package/ai/components/geo-icon.md +70 -16
- package/ai/components/geo-input.md +94 -29
- package/ai/components/geo-layout-footer.md +70 -0
- package/ai/components/geo-layout-header-actions.md +82 -0
- package/ai/components/geo-layout-header.md +89 -0
- package/ai/components/geo-layout-sidebar.md +86 -0
- package/ai/components/geo-layout.md +155 -0
- package/ai/components/geo-list-page.md +72 -0
- package/ai/components/geo-login.md +94 -0
- package/ai/components/geo-map-admin-filter.md +80 -0
- package/ai/components/geo-map-basemap-switcher.md +75 -0
- package/ai/components/geo-map-help.md +72 -0
- package/ai/components/geo-map-layer-card.md +73 -0
- package/ai/components/geo-map-layer-panel.md +75 -0
- package/ai/components/geo-map-layers-drawer.md +78 -0
- package/ai/components/geo-map-legend.md +74 -0
- package/ai/components/geo-map-locate.md +75 -0
- package/ai/components/geo-map-location-chip.md +71 -0
- package/ai/components/geo-map-measure.md +74 -0
- package/ai/components/geo-map-opacity.md +75 -0
- package/ai/components/geo-map-parcel-popup.md +79 -0
- package/ai/components/geo-map-search.md +83 -0
- package/ai/components/geo-map-shell.md +110 -0
- package/ai/components/geo-map-snapshot.md +75 -0
- package/ai/components/geo-map-swipe.md +73 -0
- package/ai/components/geo-map-toolbar.md +76 -0
- package/ai/components/geo-map-zoom.md +74 -0
- package/ai/components/geo-map.md +205 -0
- package/ai/components/geo-overlap-result.md +88 -0
- package/ai/components/geo-page-header.md +72 -0
- package/ai/components/geo-page-title.md +62 -16
- package/ai/components/geo-pagination.md +76 -24
- package/ai/components/geo-radio.md +110 -27
- package/ai/components/geo-row-actions.md +87 -19
- package/ai/components/geo-select.md +108 -28
- package/ai/components/geo-slider.md +70 -21
- package/ai/components/geo-stat-card.md +98 -0
- package/ai/components/geo-status-tag.md +67 -15
- package/ai/components/geo-step-form-layout.md +121 -38
- package/ai/components/geo-stepper.md +81 -19
- package/ai/components/geo-table-filter.md +90 -29
- package/ai/components/geo-table-pagination.md +70 -23
- package/ai/components/geo-table-toolbar.md +84 -29
- package/ai/components/geo-table.md +191 -59
- package/ai/components/geo-tabs.md +99 -27
- package/ai/components/geo-textarea.md +84 -23
- package/ai/components/geo-toast.md +138 -27
- package/ai/components/geo-tree.md +94 -22
- package/ai/components/geo-typography.md +70 -19
- package/ai/components/geo-upload.md +109 -39
- package/ai/mockup.html +1194 -0
- package/ai/recipes.md +132 -47
- package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +19 -36
- package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +14 -24
- package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +8 -11
- package/esm2022/lib/figma/geo-button/geo-button.component.mjs +30 -59
- package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +88 -0
- package/esm2022/lib/figma/geo-chart/geo-chart.types.mjs +2 -0
- package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +11 -22
- package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +22 -54
- package/esm2022/lib/figma/geo-dashboard/geo-dashboard.component.mjs +49 -0
- package/esm2022/lib/figma/geo-dashboard/geo-dashboard.types.mjs +2 -0
- package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +48 -78
- package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +47 -75
- package/esm2022/lib/figma/geo-empty-state/geo-empty-state.component.mjs +25 -0
- package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.component.mjs +75 -0
- package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.types.mjs +2 -0
- package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +59 -81
- package/esm2022/lib/figma/geo-forgot-password/geo-forgot-password.component.mjs +51 -0
- package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +45 -112
- package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +22 -32
- package/esm2022/lib/figma/geo-input/geo-input.component.mjs +41 -70
- package/esm2022/lib/figma/geo-layout/footer/geo-layout-footer.component.mjs +18 -0
- package/esm2022/lib/figma/geo-layout/geo-layout-actions.directive.mjs +15 -0
- package/esm2022/lib/figma/geo-layout/geo-layout.component.mjs +79 -0
- package/esm2022/lib/figma/geo-layout/geo-layout.types.mjs +42 -0
- package/esm2022/lib/figma/geo-layout/header/geo-layout-header.component.mjs +60 -0
- package/esm2022/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.mjs +70 -0
- package/esm2022/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.mjs +90 -0
- package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +22 -0
- package/esm2022/lib/figma/geo-login/geo-login.component.mjs +58 -0
- package/esm2022/lib/figma/geo-login/geo-login.types.mjs +2 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +52 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +61 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.mjs +26 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.mjs +24 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs +146 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +37 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +30 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +72 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.mjs +21 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.mjs +375 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +94 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +136 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +182 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +577 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +93 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.mjs +129 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +64 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +295 -0
- package/esm2022/lib/figma/geo-map/geo-map-toolbar.icons.mjs +18 -0
- package/esm2022/lib/figma/geo-map/geo-map.component.mjs +144 -0
- package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +497 -0
- package/esm2022/lib/figma/geo-map/geo-map.controller.mjs +71 -0
- package/esm2022/lib/figma/geo-map/geo-map.types.mjs +2 -0
- package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +368 -0
- package/esm2022/lib/figma/geo-map/services/geo-map-projection.service.mjs +110 -0
- package/esm2022/lib/figma/geo-map/services/geo-map.service.mjs +540 -0
- package/esm2022/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.mjs +47 -0
- package/esm2022/lib/figma/geo-map/utils/geo-map-interactions.util.mjs +30 -0
- package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.component.mjs +25 -0
- package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.types.mjs +2 -0
- package/esm2022/lib/figma/geo-page-header/geo-page-header.component.mjs +23 -0
- package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +20 -35
- package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +13 -43
- package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +32 -52
- package/esm2022/lib/figma/geo-select/geo-select.component.mjs +46 -72
- package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +12 -28
- package/esm2022/lib/figma/geo-stat-card/geo-stat-card.component.mjs +163 -0
- package/esm2022/lib/figma/geo-stat-card/geo-stat-card.types.mjs +2 -0
- package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +23 -27
- package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +39 -96
- package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +18 -33
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +14 -24
- package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +18 -36
- package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +41 -98
- package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +40 -73
- package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +26 -56
- package/esm2022/lib/figma/geo-table/geo-table.component.mjs +110 -210
- package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +33 -63
- package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +28 -44
- package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +18 -39
- package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +12 -40
- package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +49 -64
- package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +50 -101
- package/esm2022/lib/figma/index.mjs +50 -1
- package/esm2022/lib/styles/tokens.mjs +56 -24
- package/fesm2022/geoit-ui.mjs +5981 -1825
- package/fesm2022/geoit-ui.mjs.map +1 -1
- package/lib/figma/geo-alert/geo-alert.component.d.ts +10 -11
- package/lib/figma/geo-back-button/geo-back-button.component.d.ts +6 -7
- package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +2 -2
- package/lib/figma/geo-button/geo-button.component.d.ts +21 -17
- package/lib/figma/geo-chart/geo-chart.component.d.ts +40 -0
- package/lib/figma/geo-chart/geo-chart.types.d.ts +13 -0
- package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +6 -7
- package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +15 -17
- package/lib/figma/geo-dashboard/geo-dashboard.component.d.ts +29 -0
- package/lib/figma/geo-dashboard/geo-dashboard.types.d.ts +7 -0
- package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +26 -21
- package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +25 -20
- package/lib/figma/geo-empty-state/geo-empty-state.component.d.ts +17 -0
- package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +36 -0
- package/lib/figma/geo-feedback-form/geo-feedback-form.types.d.ts +8 -0
- package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +23 -20
- package/lib/figma/geo-forgot-password/geo-forgot-password.component.d.ts +24 -0
- package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +33 -35
- package/lib/figma/geo-icon/geo-icon.component.d.ts +7 -7
- package/lib/figma/geo-input/geo-input.component.d.ts +23 -21
- package/lib/figma/geo-layout/footer/geo-layout-footer.component.d.ts +10 -0
- package/lib/figma/geo-layout/geo-layout-actions.directive.d.ts +6 -0
- package/lib/figma/geo-layout/geo-layout.component.d.ts +48 -0
- package/lib/figma/geo-layout/geo-layout.types.d.ts +44 -0
- package/lib/figma/geo-layout/header/geo-layout-header.component.d.ts +31 -0
- package/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.d.ts +32 -0
- package/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.d.ts +34 -0
- package/lib/figma/geo-list-page/geo-list-page.component.d.ts +16 -0
- package/lib/figma/geo-login/geo-login.component.d.ts +27 -0
- package/lib/figma/geo-login/geo-login.types.d.ts +6 -0
- package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +28 -0
- package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +26 -0
- package/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.d.ts +20 -0
- package/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.d.ts +15 -0
- package/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.d.ts +40 -0
- package/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.d.ts +25 -0
- package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +18 -0
- package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.d.ts +24 -0
- package/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.d.ts +14 -0
- package/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.d.ts +49 -0
- package/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.d.ts +30 -0
- package/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.d.ts +44 -0
- package/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.d.ts +56 -0
- package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +103 -0
- package/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.d.ts +21 -0
- package/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.d.ts +33 -0
- package/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.d.ts +30 -0
- package/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.d.ts +67 -0
- package/lib/figma/geo-map/geo-map-toolbar.icons.d.ts +17 -0
- package/lib/figma/geo-map/geo-map.component.d.ts +53 -0
- package/lib/figma/geo-map/geo-map.constants.d.ts +73 -0
- package/lib/figma/geo-map/geo-map.controller.d.ts +49 -0
- package/lib/figma/geo-map/geo-map.types.d.ts +224 -0
- package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +42 -0
- package/lib/figma/geo-map/services/geo-map-projection.service.d.ts +32 -0
- package/lib/figma/geo-map/services/geo-map.service.d.ts +99 -0
- package/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.d.ts +13 -0
- package/lib/figma/geo-map/utils/geo-map-interactions.util.d.ts +9 -0
- package/lib/figma/geo-overlap-result/geo-overlap-result.component.d.ts +18 -0
- package/lib/figma/geo-overlap-result/geo-overlap-result.types.d.ts +7 -0
- package/lib/figma/geo-page-header/geo-page-header.component.d.ts +16 -0
- package/lib/figma/geo-page-title/geo-page-title.component.d.ts +9 -9
- package/lib/figma/geo-pagination/geo-pagination.component.d.ts +9 -14
- package/lib/figma/geo-radio/geo-radio.component.d.ts +17 -15
- package/lib/figma/geo-select/geo-select.component.d.ts +24 -19
- package/lib/figma/geo-slider/geo-slider.component.d.ts +7 -9
- package/lib/figma/geo-stat-card/geo-stat-card.component.d.ts +50 -0
- package/lib/figma/geo-stat-card/geo-stat-card.types.d.ts +11 -0
- package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +7 -7
- package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +27 -29
- package/lib/figma/geo-stepper/geo-stepper.component.d.ts +6 -8
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +6 -7
- package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +11 -12
- package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +21 -28
- package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +17 -20
- package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +17 -18
- package/lib/figma/geo-table/geo-table.component.d.ts +58 -62
- package/lib/figma/geo-tabs/geo-tabs.component.d.ts +14 -17
- package/lib/figma/geo-textarea/geo-textarea.component.d.ts +15 -13
- package/lib/figma/geo-toast/geo-toast.component.d.ts +11 -12
- package/lib/figma/geo-tree/geo-tree.component.d.ts +8 -13
- package/lib/figma/geo-typography/geo-typography.component.d.ts +13 -13
- package/lib/figma/geo-upload/geo-upload.component.d.ts +26 -28
- package/lib/figma/index.d.ts +49 -0
- package/lib/styles/tokens.d.ts +56 -23
- package/package.json +4 -2
- package/src/lib/figma/geo-map/assets/toolbar/fullscreen.svg +8 -0
- package/src/lib/figma/geo-map/assets/toolbar/home.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/layers.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/measure-area.svg +12 -0
- package/src/lib/figma/geo-map/assets/toolbar/measure-distance.svg +5 -0
- package/src/lib/figma/geo-map/assets/toolbar/pan.svg +13 -0
- package/src/lib/figma/geo-map/assets/toolbar/search.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/zoom-in.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/zoom-out.svg +5 -0
- package/src/lib/styles/design-tokens.scss +108 -35
- package/src/lib/styles/scrollbar.scss +2 -2
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @geoit/ui
|
|
2
2
|
|
|
3
|
-
Angular 18 + ng-zorro
|
|
3
|
+
GEO design system for **Angular 18** + **ng-zorro 18**. Standalone components, design tokens, and AI-ready usage docs.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -8,28 +8,136 @@ Angular 18 + ng-zorro GEO design system.
|
|
|
8
8
|
npm install @geoit/ui
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**Peer dependencies** (install in your app if missing):
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @angular/animations@^18 @angular/common@^18 @angular/core@^18 \
|
|
15
|
+
@angular/forms@^18 @angular/cdk@^18 @ant-design/icons-angular@^18 ng-zorro-antd@^18
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Setup styles (once per app)
|
|
19
|
+
|
|
20
|
+
In your global styles (e.g. `styles.scss`):
|
|
12
21
|
|
|
13
22
|
```scss
|
|
14
|
-
@import
|
|
15
|
-
@import
|
|
23
|
+
@import "node_modules/@geoit/ui/src/lib/styles/design-tokens.scss";
|
|
24
|
+
@import "node_modules/@geoit/ui/src/lib/styles/theme.scss";
|
|
16
25
|
```
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
Use tokens in your CSS — do not hardcode brand colors or radius:
|
|
28
|
+
|
|
29
|
+
- `var(--geo-color-primary-default)`
|
|
30
|
+
- `var(--geo-radius)` (default **8px**; md/lg/xl for chips & popovers)
|
|
31
|
+
|
|
32
|
+
## Quick start
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { Component } from "@angular/core";
|
|
36
|
+
import { FormsModule } from "@angular/forms";
|
|
37
|
+
import { GeoButtonComponent, GeoInputComponent, GeoFormModalComponent, GeoToastService } from "@geoit/ui";
|
|
38
|
+
|
|
39
|
+
@Component({
|
|
40
|
+
standalone: true,
|
|
41
|
+
imports: [FormsModule, GeoButtonComponent, GeoInputComponent, GeoFormModalComponent],
|
|
42
|
+
template: `
|
|
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()">
|
|
46
|
+
<geo-input label="Tên" [required]="true" [block]="true" [(ngModel)]="name"></geo-input>
|
|
47
|
+
</geo-form-modal>
|
|
48
|
+
`,
|
|
49
|
+
})
|
|
50
|
+
export class DemoComponent {
|
|
51
|
+
open = false;
|
|
52
|
+
name = "";
|
|
53
|
+
|
|
54
|
+
constructor(private toast: GeoToastService) {}
|
|
55
|
+
|
|
56
|
+
save(): void {
|
|
57
|
+
this.toast.success("Thành công!", "Đã lưu.");
|
|
58
|
+
this.open = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Common components
|
|
64
|
+
|
|
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" \| …` |
|
|
83
|
+
|
|
84
|
+
### Button API (quick)
|
|
85
|
+
|
|
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` |
|
|
92
|
+
|
|
93
|
+
```html
|
|
94
|
+
<geo-button appearance="primary" color="brand" icon="plus">Thêm mới</geo-button>
|
|
95
|
+
<geo-button appearance="primary" icon="right" iconPlacement="end">Tiếp theo</geo-button>
|
|
96
|
+
<geo-button appearance="secondary" (clicked)="cancel()">Hủy</geo-button>
|
|
97
|
+
```
|
|
19
98
|
|
|
20
|
-
|
|
99
|
+
### Form controls & `ngModel`
|
|
21
100
|
|
|
22
|
-
|
|
23
|
-
|------|---------|
|
|
24
|
-
| `node_modules/@geoit/ui/AGENTS.md` | Pointer + rules |
|
|
25
|
-
| `node_modules/@geoit/ui/ai/AGENTS.md` | Full agent rules |
|
|
26
|
-
| `node_modules/@geoit/ui/ai/catalog.json` | Machine-readable catalog |
|
|
27
|
-
| `node_modules/@geoit/ui/ai/components/*.md` | Per-component docs |
|
|
28
|
-
| `node_modules/@geoit/ui/ai/recipes.md` | Copy-paste recipes |
|
|
101
|
+
These implement **ControlValueAccessor** — use `[(ngModel)]` or reactive forms:
|
|
29
102
|
|
|
30
|
-
|
|
103
|
+
`geo-input`, `geo-textarea`, `geo-select`, `geo-radio`, `geo-date-picker`, `geo-date-range-picker`, `geo-slider`
|
|
31
104
|
|
|
32
|
-
|
|
105
|
+
`geo-checkbox` uses **`[(checked)]`** (not CVA).
|
|
106
|
+
|
|
107
|
+
### Toast (preferred)
|
|
108
|
+
|
|
109
|
+
```ts
|
|
110
|
+
import { GeoToastService } from '@geoit/ui';
|
|
111
|
+
|
|
112
|
+
constructor(private toast: GeoToastService) {}
|
|
113
|
+
|
|
114
|
+
this.toast.success('Thành công!', 'Đã lưu hồ sơ.');
|
|
115
|
+
this.toast.error('Lỗi!', 'Không thể lưu.');
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Full docs (shipped in the package)
|
|
119
|
+
|
|
120
|
+
After install:
|
|
121
|
+
|
|
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 |
|
|
127
|
+
| `node_modules/@geoit/ui/ai/components/*.md` | **Per-component API** (inputs/outputs/examples) |
|
|
128
|
+
| `node_modules/@geoit/ui/ai/recipes.md` | Copy-paste screen patterns |
|
|
129
|
+
|
|
130
|
+
Open a component doc before using it, e.g.:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
node_modules/@geoit/ui/ai/components/geo-button.md
|
|
134
|
+
node_modules/@geoit/ui/ai/components/geo-form-modal.md
|
|
135
|
+
node_modules/@geoit/ui/ai/components/geo-table.md
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Cursor rule (recommended)
|
|
139
|
+
|
|
140
|
+
`.cursor/rules/geo-ui.mdc` in your app:
|
|
33
141
|
|
|
34
142
|
```md
|
|
35
143
|
---
|
|
@@ -38,9 +146,24 @@ alwaysApply: true
|
|
|
38
146
|
---
|
|
39
147
|
|
|
40
148
|
UI must use `@geoit/ui`. Before writing UI, read:
|
|
149
|
+
|
|
41
150
|
- node_modules/@geoit/ui/ai/AGENTS.md
|
|
42
151
|
- node_modules/@geoit/ui/ai/catalog.json
|
|
43
152
|
- node_modules/@geoit/ui/ai/components/<selector>.md when needed
|
|
44
153
|
```
|
|
45
154
|
|
|
46
|
-
|
|
155
|
+
## Design tokens
|
|
156
|
+
|
|
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` |
|
|
164
|
+
|
|
165
|
+
TypeScript mirror: `geoColorTokens` from `@geoit/ui` (via styles/tokens export).
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
Internal / project license — see repository.
|
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 **
|
|
12
|
-
4. Before implementing a component, **read** `ai/components/<selector>.md` and/or `ai/catalog.json`.
|
|
13
|
-
5. Prefer **copying examples** from those docs /
|
|
11
|
+
- Radius: `var(--geo-radius)` (default **8px**; scale: sm 6 / md 10 / lg 12 / xl 14)
|
|
12
|
+
4. Before implementing a component, **read the full doc** `ai/components/<selector>.md` (Inputs/Outputs/Examples/Tips) and/or `ai/catalog.json`.
|
|
13
|
+
5. Prefer **copying examples** from those docs — adapt labels/bindings only; do not invent props.
|
|
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`
|
|
14
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
|
|
39
|
-
@import
|
|
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
|
|
54
|
-
|
|
55
|
-
| CTA / actions
|
|
56
|
-
| Text field
|
|
57
|
-
| Select
|
|
58
|
-
| Exclusive options
|
|
59
|
-
| Checkbox
|
|
60
|
-
| Dialog form
|
|
61
|
-
| Confirm delete
|
|
62
|
-
| Multi-step in dialog | `geo-form-modal` + `geo-stepper`
|
|
63
|
-
| Multi-step full page | `geo-step-form-layout`
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
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
|
|
|
@@ -80,7 +90,8 @@ See [`recipes.md`](./recipes.md) for:
|
|
|
80
90
|
## Catalog
|
|
81
91
|
|
|
82
92
|
- Index: [`README.md`](./README.md)
|
|
83
|
-
- Machine catalog: [`catalog.json`](./catalog.json)
|
|
84
|
-
- Per component: [`components/`](./components/)
|
|
93
|
+
- Machine catalog: [`catalog.json`](./catalog.json) (includes input types/defaults)
|
|
94
|
+
- Per component: [`components/`](./components/) — full Inputs/Outputs tables
|
|
95
|
+
- Recipes: [`recipes.md`](./recipes.md)
|
|
85
96
|
|
|
86
97
|
Regenerate docs: `npm run ai:docs`
|
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-
|
|
13
|
+
| `geo-chart` | other | GeoChartComponent | [geo-chart.md](./components/geo-chart.md) |
|
|
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-
|
|
76
|
+
Generated: 2026-08-24T03:07:52.099Z
|
|
43
77
|
|
|
44
78
|
Regenerate: `npm run ai:docs`
|