@geoit/ui 0.0.2
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 +25 -0
- package/README.md +46 -0
- package/ai/AGENTS.md +86 -0
- package/ai/README.md +44 -0
- package/ai/catalog.json +882 -0
- package/ai/components/geo-alert.md +56 -0
- package/ai/components/geo-back-button.md +54 -0
- package/ai/components/geo-breadcrumb.md +52 -0
- package/ai/components/geo-button.md +63 -0
- package/ai/components/geo-checkbox.md +54 -0
- package/ai/components/geo-column-picker.md +54 -0
- package/ai/components/geo-confirm-modal.md +70 -0
- package/ai/components/geo-date-picker.md +65 -0
- package/ai/components/geo-date-range-picker.md +64 -0
- package/ai/components/geo-file-picker.md +62 -0
- package/ai/components/geo-form-modal.md +88 -0
- package/ai/components/geo-icon.md +53 -0
- package/ai/components/geo-input.md +65 -0
- package/ai/components/geo-page-title.md +53 -0
- package/ai/components/geo-pagination.md +59 -0
- package/ai/components/geo-radio.md +67 -0
- package/ai/components/geo-row-actions.md +54 -0
- package/ai/components/geo-select.md +68 -0
- package/ai/components/geo-slider.md +56 -0
- package/ai/components/geo-status-tag.md +51 -0
- package/ai/components/geo-step-form-layout.md +81 -0
- package/ai/components/geo-stepper.md +63 -0
- package/ai/components/geo-table-filter.md +65 -0
- package/ai/components/geo-table-pagination.md +59 -0
- package/ai/components/geo-table-toolbar.md +64 -0
- package/ai/components/geo-table.md +98 -0
- package/ai/components/geo-tabs.md +62 -0
- package/ai/components/geo-textarea.md +59 -0
- package/ai/components/geo-toast.md +61 -0
- package/ai/components/geo-tree.md +58 -0
- package/ai/components/geo-typography.md +57 -0
- package/ai/components/geo-upload.md +78 -0
- package/ai/recipes.md +111 -0
- package/esm2022/geoit-ui.mjs +5 -0
- package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +58 -0
- package/esm2022/lib/figma/geo-alert/geo-alert.types.mjs +7 -0
- package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +48 -0
- package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +33 -0
- package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.types.mjs +2 -0
- package/esm2022/lib/figma/geo-button/geo-button.component.mjs +77 -0
- package/esm2022/lib/figma/geo-button/geo-button.types.mjs +2 -0
- package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +34 -0
- package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +76 -0
- package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.types.mjs +2 -0
- package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +119 -0
- package/esm2022/lib/figma/geo-date-picker/geo-date-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +116 -0
- package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +145 -0
- package/esm2022/lib/figma/geo-file-picker/geo-file-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +153 -0
- package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +51 -0
- package/esm2022/lib/figma/geo-icon/geo-icon.types.mjs +8 -0
- package/esm2022/lib/figma/geo-input/geo-input.component.mjs +118 -0
- package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +51 -0
- package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +54 -0
- package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +95 -0
- package/esm2022/lib/figma/geo-radio/geo-radio.types.mjs +2 -0
- package/esm2022/lib/figma/geo-select/geo-select.component.mjs +113 -0
- package/esm2022/lib/figma/geo-select/geo-select.types.mjs +2 -0
- package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +43 -0
- package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +62 -0
- package/esm2022/lib/figma/geo-status-tag/geo-status-tag.types.mjs +30 -0
- package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +157 -0
- package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.types.mjs +2 -0
- package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +77 -0
- package/esm2022/lib/figma/geo-stepper/geo-stepper.types.mjs +2 -0
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +65 -0
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.mjs +31 -0
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +64 -0
- package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.mjs +24 -0
- package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +195 -0
- package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +118 -0
- package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +68 -0
- package/esm2022/lib/figma/geo-table/geo-table.component.mjs +381 -0
- package/esm2022/lib/figma/geo-table/geo-table.types.mjs +4 -0
- package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +94 -0
- package/esm2022/lib/figma/geo-tabs/geo-tabs.types.mjs +2 -0
- package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +85 -0
- package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +57 -0
- package/esm2022/lib/figma/geo-toast/geo-toast.service.mjs +116 -0
- package/esm2022/lib/figma/geo-toast/geo-toast.types.mjs +13 -0
- package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +52 -0
- package/esm2022/lib/figma/geo-tree/geo-tree.types.mjs +2 -0
- package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +112 -0
- package/esm2022/lib/figma/geo-typography/geo-typography.types.mjs +96 -0
- package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +218 -0
- package/esm2022/lib/figma/geo-upload/geo-upload.types.mjs +30 -0
- package/esm2022/lib/figma/index.mjs +56 -0
- package/esm2022/lib/ng-zorro/ng-zorro-antd.module.mjs +293 -0
- package/esm2022/lib/styles/tokens.mjs +144 -0
- package/esm2022/public-api.mjs +7 -0
- package/fesm2022/geoit-ui.mjs +3805 -0
- package/fesm2022/geoit-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/figma/geo-alert/geo-alert.component.d.ts +17 -0
- package/lib/figma/geo-alert/geo-alert.types.d.ts +2 -0
- package/lib/figma/geo-back-button/geo-back-button.component.d.ts +18 -0
- package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +12 -0
- package/lib/figma/geo-breadcrumb/geo-breadcrumb.types.d.ts +10 -0
- package/lib/figma/geo-button/geo-button.component.d.ts +27 -0
- package/lib/figma/geo-button/geo-button.types.d.ts +4 -0
- package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +12 -0
- package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +24 -0
- package/lib/figma/geo-confirm-modal/geo-confirm-modal.types.d.ts +5 -0
- package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +35 -0
- package/lib/figma/geo-date-picker/geo-date-picker.types.d.ts +2 -0
- package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +34 -0
- package/lib/figma/geo-date-range-picker/geo-date-range-picker.types.d.ts +2 -0
- package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +39 -0
- package/lib/figma/geo-file-picker/geo-file-picker.types.d.ts +4 -0
- package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +57 -0
- package/lib/figma/geo-icon/geo-icon.component.d.ts +19 -0
- package/lib/figma/geo-icon/geo-icon.types.d.ts +3 -0
- package/lib/figma/geo-input/geo-input.component.d.ts +37 -0
- package/lib/figma/geo-page-title/geo-page-title.component.d.ts +22 -0
- package/lib/figma/geo-pagination/geo-pagination.component.d.ts +21 -0
- package/lib/figma/geo-radio/geo-radio.component.d.ts +31 -0
- package/lib/figma/geo-radio/geo-radio.types.d.ts +9 -0
- package/lib/figma/geo-select/geo-select.component.d.ts +33 -0
- package/lib/figma/geo-select/geo-select.types.d.ts +7 -0
- package/lib/figma/geo-slider/geo-slider.component.d.ts +17 -0
- package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +18 -0
- package/lib/figma/geo-status-tag/geo-status-tag.types.d.ts +13 -0
- package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +67 -0
- package/lib/figma/geo-step-form-layout/geo-step-form-layout.types.d.ts +9 -0
- package/lib/figma/geo-stepper/geo-stepper.component.d.ts +42 -0
- package/lib/figma/geo-stepper/geo-stepper.types.d.ts +9 -0
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +20 -0
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.d.ts +5 -0
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.d.ts +17 -0
- package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +21 -0
- package/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.d.ts +13 -0
- package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +75 -0
- package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +33 -0
- package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +24 -0
- package/lib/figma/geo-table/geo-table.component.d.ts +113 -0
- package/lib/figma/geo-table/geo-table.types.d.ts +47 -0
- package/lib/figma/geo-tabs/geo-tabs.component.d.ts +31 -0
- package/lib/figma/geo-tabs/geo-tabs.types.d.ts +7 -0
- package/lib/figma/geo-textarea/geo-textarea.component.d.ts +27 -0
- package/lib/figma/geo-toast/geo-toast.component.d.ts +23 -0
- package/lib/figma/geo-toast/geo-toast.service.d.ts +33 -0
- package/lib/figma/geo-toast/geo-toast.types.d.ts +45 -0
- package/lib/figma/geo-tree/geo-tree.component.d.ts +23 -0
- package/lib/figma/geo-tree/geo-tree.types.d.ts +12 -0
- package/lib/figma/geo-typography/geo-typography.component.d.ts +35 -0
- package/lib/figma/geo-typography/geo-typography.types.d.ts +12 -0
- package/lib/figma/geo-upload/geo-upload.component.d.ts +59 -0
- package/lib/figma/geo-upload/geo-upload.types.d.ts +13 -0
- package/lib/figma/index.d.ts +55 -0
- package/lib/ng-zorro/ng-zorro-antd.module.d.ts +76 -0
- package/lib/styles/tokens.d.ts +184 -0
- package/package.json +38 -0
- package/public-api.d.ts +3 -0
- package/src/lib/styles/design-tokens.scss +143 -0
- package/src/lib/styles/geo-toast-notification.scss +129 -0
- package/src/lib/styles/scrollbar.scss +38 -0
- package/src/lib/styles/theme.scss +153 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geoit-ui.mjs","sources":["../../../projects/geo-ui/src/lib/styles/tokens.ts","../../../projects/geo-ui/src/lib/ng-zorro/ng-zorro-antd.module.ts","../../../projects/geo-ui/src/lib/figma/geo-alert/geo-alert.types.ts","../../../projects/geo-ui/src/lib/figma/geo-alert/geo-alert.component.ts","../../../projects/geo-ui/src/lib/figma/geo-alert/geo-alert.component.html","../../../projects/geo-ui/src/lib/figma/geo-back-button/geo-back-button.component.ts","../../../projects/geo-ui/src/lib/figma/geo-back-button/geo-back-button.component.html","../../../projects/geo-ui/src/lib/figma/geo-breadcrumb/geo-breadcrumb.component.ts","../../../projects/geo-ui/src/lib/figma/geo-breadcrumb/geo-breadcrumb.component.html","../../../projects/geo-ui/src/lib/figma/geo-button/geo-button.component.ts","../../../projects/geo-ui/src/lib/figma/geo-button/geo-button.component.html","../../../projects/geo-ui/src/lib/figma/geo-checkbox/geo-checkbox.component.ts","../../../projects/geo-ui/src/lib/figma/geo-checkbox/geo-checkbox.component.html","../../../projects/geo-ui/src/lib/figma/geo-confirm-modal/geo-confirm-modal.component.ts","../../../projects/geo-ui/src/lib/figma/geo-confirm-modal/geo-confirm-modal.component.html","../../../projects/geo-ui/src/lib/figma/geo-date-picker/geo-date-picker.component.ts","../../../projects/geo-ui/src/lib/figma/geo-date-picker/geo-date-picker.component.html","../../../projects/geo-ui/src/lib/figma/geo-date-range-picker/geo-date-range-picker.component.ts","../../../projects/geo-ui/src/lib/figma/geo-date-range-picker/geo-date-range-picker.component.html","../../../projects/geo-ui/src/lib/figma/geo-file-picker/geo-file-picker.component.ts","../../../projects/geo-ui/src/lib/figma/geo-file-picker/geo-file-picker.component.html","../../../projects/geo-ui/src/lib/figma/geo-upload/geo-upload.types.ts","../../../projects/geo-ui/src/lib/figma/geo-upload/geo-upload.component.ts","../../../projects/geo-ui/src/lib/figma/geo-upload/geo-upload.component.html","../../../projects/geo-ui/src/lib/figma/geo-form-modal/geo-form-modal.component.ts","../../../projects/geo-ui/src/lib/figma/geo-form-modal/geo-form-modal.component.html","../../../projects/geo-ui/src/lib/figma/geo-icon/geo-icon.types.ts","../../../projects/geo-ui/src/lib/figma/geo-icon/geo-icon.component.ts","../../../projects/geo-ui/src/lib/figma/geo-icon/geo-icon.component.html","../../../projects/geo-ui/src/lib/figma/geo-input/geo-input.component.ts","../../../projects/geo-ui/src/lib/figma/geo-input/geo-input.component.html","../../../projects/geo-ui/src/lib/figma/geo-pagination/geo-pagination.component.ts","../../../projects/geo-ui/src/lib/figma/geo-pagination/geo-pagination.component.html","../../../projects/geo-ui/src/lib/figma/geo-typography/geo-typography.types.ts","../../../projects/geo-ui/src/lib/figma/geo-typography/geo-typography.component.ts","../../../projects/geo-ui/src/lib/figma/geo-page-title/geo-page-title.component.ts","../../../projects/geo-ui/src/lib/figma/geo-page-title/geo-page-title.component.html","../../../projects/geo-ui/src/lib/figma/geo-radio/geo-radio.component.ts","../../../projects/geo-ui/src/lib/figma/geo-radio/geo-radio.component.html","../../../projects/geo-ui/src/lib/figma/geo-select/geo-select.component.ts","../../../projects/geo-ui/src/lib/figma/geo-select/geo-select.component.html","../../../projects/geo-ui/src/lib/figma/geo-slider/geo-slider.component.ts","../../../projects/geo-ui/src/lib/figma/geo-slider/geo-slider.component.html","../../../projects/geo-ui/src/lib/figma/geo-status-tag/geo-status-tag.types.ts","../../../projects/geo-ui/src/lib/figma/geo-status-tag/geo-status-tag.component.ts","../../../projects/geo-ui/src/lib/figma/geo-status-tag/geo-status-tag.component.html","../../../projects/geo-ui/src/lib/figma/geo-stepper/geo-stepper.component.ts","../../../projects/geo-ui/src/lib/figma/geo-stepper/geo-stepper.component.html","../../../projects/geo-ui/src/lib/figma/geo-step-form-layout/geo-step-form-layout.component.ts","../../../projects/geo-ui/src/lib/figma/geo-step-form-layout/geo-step-form-layout.component.html","../../../projects/geo-ui/src/lib/figma/geo-tabs/geo-tabs.component.ts","../../../projects/geo-ui/src/lib/figma/geo-tabs/geo-tabs.component.html","../../../projects/geo-ui/src/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.html","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table.types.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.html","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table.component.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table.component.html","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.html","../../../projects/geo-ui/src/lib/figma/geo-textarea/geo-textarea.component.ts","../../../projects/geo-ui/src/lib/figma/geo-textarea/geo-textarea.component.html","../../../projects/geo-ui/src/lib/figma/geo-toast/geo-toast.types.ts","../../../projects/geo-ui/src/lib/figma/geo-toast/geo-toast.component.ts","../../../projects/geo-ui/src/lib/figma/geo-toast/geo-toast.component.html","../../../projects/geo-ui/src/lib/figma/geo-toast/geo-toast.service.ts","../../../projects/geo-ui/src/lib/figma/geo-tree/geo-tree.component.ts","../../../projects/geo-ui/src/lib/figma/geo-tree/geo-tree.component.html","../../../projects/geo-ui/src/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.html","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.ts","../../../projects/geo-ui/src/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.html","../../../projects/geo-ui/src/public-api.ts","../../../projects/geo-ui/src/geoit-ui.ts"],"sourcesContent":["/**\n * GEO UI design tokens (TypeScript).\n * Mirror of CSS variables in design-tokens.scss — use for JS/theme config only.\n */\nexport const geoColorTokens = {\n primary: {\n default: '#9A4828',\n hover: '#7D3A20',\n light: '#B5643F',\n dark: '#2C1810',\n background: '#FAF5ED',\n backgroundAlt: '#F5F0E8',\n border: '#E8E0D8',\n surfaceLight: '#F8E6DE',\n secondaryHover: '#FAF5ED',\n },\n neutral: {\n 900: '#111827',\n 800: '#212121',\n 700: '#374151',\n 500: '#6B7280',\n 400: '#9CA3AF',\n 300: '#D1D5DB',\n 200: '#E5E7EB',\n 100: '#F3F4F6',\n white: '#FFFFFF',\n disabledText: '#8F9294',\n },\n success: {\n dark: '#166534',\n default: '#22C55E',\n light: '#DCFCE7',\n },\n error: {\n dark: '#991B1B',\n default: '#DC2626',\n light: '#FEE2E2',\n },\n warning: {\n dark: '#92400E',\n default: '#F59E0B',\n light: '#FEF3C7',\n },\n info: {\n dark: '#1E40AF',\n default: '#3B82F6',\n light: '#DBEAFE',\n },\n teal: {\n dark: '#0F766E',\n default: '#14B8A6',\n light: '#CCFBF1',\n },\n} as const;\n\nexport type GeoColorTokens = typeof geoColorTokens;\n\n/** CSS custom property names for each token path. */\nexport const geoColorCssVars = {\n primary: {\n default: '--geo-color-primary-default',\n hover: '--geo-color-primary-hover',\n light: '--geo-color-primary-light',\n dark: '--geo-color-primary-dark',\n background: '--geo-color-primary-background',\n backgroundAlt: '--geo-color-primary-background-alt',\n border: '--geo-color-primary-border',\n surfaceLight: '--geo-color-primary-surface-light',\n secondaryHover: '--geo-color-primary-secondary-hover',\n },\n neutral: {\n 900: '--geo-color-neutral-900',\n 800: '--geo-color-neutral-800',\n 700: '--geo-color-neutral-700',\n 500: '--geo-color-neutral-500',\n 400: '--geo-color-neutral-400',\n 300: '--geo-color-neutral-300',\n 200: '--geo-color-neutral-200',\n 100: '--geo-color-neutral-100',\n white: '--geo-color-neutral-white',\n disabledText: '--geo-color-neutral-disabled-text',\n },\n success: {\n dark: '--geo-color-success-dark',\n default: '--geo-color-success-default',\n light: '--geo-color-success-light',\n },\n error: {\n dark: '--geo-color-error-dark',\n default: '--geo-color-error-default',\n light: '--geo-color-error-light',\n },\n warning: {\n dark: '--geo-color-warning-dark',\n default: '--geo-color-warning-default',\n light: '--geo-color-warning-light',\n },\n info: {\n dark: '--geo-color-info-dark',\n default: '--geo-color-info-default',\n light: '--geo-color-info-light',\n },\n teal: {\n dark: '--geo-color-teal-dark',\n default: '--geo-color-teal-default',\n light: '--geo-color-teal-light',\n },\n} as const;\n\nexport function cssVar(name: string): string {\n return `var(${name})`;\n}\n\n/** Typography design tokens (Inter + type scale). */\nexport const geoTypographyTokens = {\n fontFamily: \"'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif\",\n weight: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n scale: {\n h1: { size: '28px', weight: 700, lineHeight: '36px' },\n h2: { size: '24px', weight: 700, lineHeight: '32px' },\n h3: { size: '20px', weight: 700, lineHeight: '28px' },\n h4: { size: '16px', weight: 700, lineHeight: '24px' },\n subtitle: { size: '14px', weight: 600, lineHeight: '20px' },\n body: { size: '14px', weight: 400, lineHeight: '20px' },\n bodySmall: { size: '13px', weight: 400, lineHeight: '18px' },\n caption: { size: '12px', weight: 400, lineHeight: '16px' },\n overline: { size: '11px', weight: 600, lineHeight: '16px' },\n tiny: { size: '10px', weight: 400, lineHeight: '14px' },\n },\n} as const;\n\nexport type GeoTypographyTokens = typeof geoTypographyTokens;\n\n/** Border radius design tokens (default 6px). */\nexport const geoRadiusTokens = {\n default: '6px',\n sm: '6px',\n md: '6px',\n lg: '6px',\n} as const;\n\nexport const geoRadiusCssVars = {\n default: '--geo-radius',\n sm: '--geo-radius-sm',\n md: '--geo-radius-md',\n lg: '--geo-radius-lg',\n} as const;\n\nexport type GeoRadiusTokens = typeof geoRadiusTokens;\n\n","import { NgModule } from '@angular/core';\n\nimport { NzAffixModule } from 'ng-zorro-antd/affix';\nimport { NzAlertModule } from 'ng-zorro-antd/alert';\nimport { NzAnchorModule } from 'ng-zorro-antd/anchor';\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\nimport { NzBackTopModule } from 'ng-zorro-antd/back-top';\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzCalendarModule } from 'ng-zorro-antd/calendar';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzCarouselModule } from 'ng-zorro-antd/carousel';\nimport { NzCascaderModule } from 'ng-zorro-antd/cascader';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { NzCommentModule } from 'ng-zorro-antd/comment';\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { NzTransButtonModule } from 'ng-zorro-antd/core/trans-button';\nimport { NzWaveModule } from 'ng-zorro-antd/core/wave';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzImageModule } from 'ng-zorro-antd/image';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\nimport { NzListModule } from 'ng-zorro-antd/list';\nimport { NzMentionModule } from 'ng-zorro-antd/mention';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzMessageModule } from 'ng-zorro-antd/message';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzNotificationModule } from 'ng-zorro-antd/notification';\nimport { NzPageHeaderModule } from 'ng-zorro-antd/page-header';\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzRateModule } from 'ng-zorro-antd/rate';\nimport { NzResultModule } from 'ng-zorro-antd/result';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzStatisticModule } from 'ng-zorro-antd/statistic';\nimport { NzStepsModule } from 'ng-zorro-antd/steps';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { NzTagModule } from 'ng-zorro-antd/tag';\nimport { NzTimePickerModule } from 'ng-zorro-antd/time-picker';\nimport { NzTimelineModule } from 'ng-zorro-antd/timeline';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { NzTransferModule } from 'ng-zorro-antd/transfer';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { NzTreeViewModule } from 'ng-zorro-antd/tree-view';\nimport { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';\nimport { NzTypographyModule } from 'ng-zorro-antd/typography';\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\nimport { NzResizableModule } from 'ng-zorro-antd/resizable';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\nimport { NzSpaceModule } from 'ng-zorro-antd/space';\nimport { NzSegmentedModule } from 'ng-zorro-antd/segmented';\n\n@NgModule({\n exports: [\n NzAffixModule,\n NzAlertModule,\n NzAnchorModule,\n NzAutocompleteModule,\n NzAvatarModule,\n NzBackTopModule,\n NzBadgeModule,\n NzButtonModule,\n NzBreadCrumbModule,\n NzCalendarModule,\n NzCardModule,\n NzCarouselModule,\n NzCascaderModule,\n NzCheckboxModule,\n NzCollapseModule,\n NzCommentModule,\n NzDatePickerModule,\n NzDescriptionsModule,\n NzDividerModule,\n NzDrawerModule,\n NzDropDownModule,\n NzEmptyModule,\n NzFormModule,\n NzGridModule,\n NzI18nModule,\n NzIconModule,\n NzImageModule,\n NzInputModule,\n NzInputNumberModule,\n NzLayoutModule,\n NzListModule,\n NzMentionModule,\n NzMenuModule,\n NzMessageModule,\n NzModalModule,\n NzNoAnimationModule,\n NzNotificationModule,\n NzPageHeaderModule,\n NzPaginationModule,\n NzPopconfirmModule,\n NzPopoverModule,\n NzProgressModule,\n NzRadioModule,\n NzRateModule,\n NzResultModule,\n NzSelectModule,\n NzSkeletonModule,\n NzSliderModule,\n NzSpinModule,\n NzStatisticModule,\n NzStepsModule,\n NzSwitchModule,\n NzTableModule,\n NzTabsModule,\n NzTagModule,\n NzTimePickerModule,\n NzTimelineModule,\n NzToolTipModule,\n NzTransButtonModule,\n NzTransferModule,\n NzTreeModule,\n NzTreeViewModule,\n NzTreeSelectModule,\n NzTypographyModule,\n NzUploadModule,\n NzWaveModule,\n NzResizableModule,\n NzPipesModule,\n NzSpaceModule,\n NzSegmentedModule,\n ],\n})\nexport class NgZorroAntdModule {}\n","export type GeoAlertType = 'success' | 'error' | 'warning' | 'info';\n\nexport const UI_ALERT_DEFAULT_TITLES: Record<GeoAlertType, string> = {\n success: 'Thành công!',\n error: 'Lỗi!',\n warning: 'Cảnh báo!',\n info: 'Thông tin!',\n};\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { UI_ALERT_DEFAULT_TITLES, GeoAlertType } from './geo-alert.types';\n\n@Component({\n selector: 'geo-alert',\n standalone: true,\n imports: [CommonModule, NzIconModule],\n templateUrl: './geo-alert.component.html',\n styleUrl: './geo-alert.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-alert-host',\n '[class.geo-alert-host--hidden]': '!visible',\n },\n})\nexport class GeoAlertComponent {\n @Input() type: GeoAlertType = 'info';\n @Input() title = '';\n @Input() message = '';\n @Input() closable = true;\n @Input() visible = true;\n @Input() showIcon = true;\n\n @Output() closed = new EventEmitter<void>();\n\n get displayTitle(): string {\n return this.title || UI_ALERT_DEFAULT_TITLES[this.type];\n }\n\n get iconType(): string {\n switch (this.type) {\n case 'success':\n return 'check-circle';\n case 'error':\n return 'close-circle';\n case 'warning':\n return 'exclamation-circle';\n default:\n return 'info-circle';\n }\n }\n\n onClose(): void {\n this.visible = false;\n this.closed.emit();\n }\n}\n","@if (visible) {\n <div class=\"geo-alert\" [class]=\"'geo-alert--' + type\" role=\"alert\">\n <div class=\"geo-alert__main\">\n @if (showIcon) {\n <span class=\"geo-alert__icon\" nz-icon [nzType]=\"iconType\" nzTheme=\"outline\"></span>\n }\n\n <div class=\"geo-alert__content\">\n <p class=\"geo-alert__title\">{{ displayTitle }}</p>\n @if (message) {\n <p class=\"geo-alert__message\">{{ message }}</p>\n }\n </div>\n </div>\n\n @if (closable) {\n <button type=\"button\" class=\"geo-alert__close\" aria-label=\"Đóng thông báo\" (click)=\"onClose()\">\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n}\n","import { CommonModule, Location } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n} from '@angular/core';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\n/**\n * Nút quay lại dùng chung cho các page form/detail.\n * Mặc định `history.back()` (−1). Set `[historyBack]=\"false\"` nếu parent tự navigate.\n */\n@Component({\n selector: 'geo-back-button',\n standalone: true,\n imports: [CommonModule, NzIconModule],\n templateUrl: './geo-back-button.component.html',\n styleUrl: './geo-back-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'geo-back-button-host',\n },\n})\nexport class GeoBackButtonComponent {\n private readonly location = inject(Location);\n\n @Input() ariaLabel = 'Quay lại';\n @Input() title = 'Quay lại';\n @Input() disabled = false;\n /** `true` (mặc định): `Location.back()` — về trang trước trong history. */\n @Input() historyBack = true;\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (this.disabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.clicked.emit(event);\n\n if (this.historyBack) {\n this.location.back();\n }\n }\n}\n","<button\n type=\"button\"\n class=\"geo-back-button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.title]=\"title || ariaLabel\"\n [disabled]=\"disabled\"\n (click)=\"onClick($event)\"\n>\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\" aria-hidden=\"true\"></span>\n</button>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { GeoBreadcrumbItem } from './geo-breadcrumb.types';\n\n/**\n * Breadcrumb GEO — dựa trên `nz-breadcrumb`.\n * Item thường: neutral gray; item active (cuối): primary + semibold.\n */\n@Component({\n selector: 'geo-breadcrumb',\n standalone: true,\n imports: [CommonModule, RouterModule, NzBreadCrumbModule, NzIconModule],\n templateUrl: './geo-breadcrumb.component.html',\n styleUrl: './geo-breadcrumb.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-breadcrumb-host',\n },\n})\nexport class GeoBreadcrumbComponent {\n @Input() items: GeoBreadcrumbItem[] = [];\n\n isActive(item: GeoBreadcrumbItem, index: number): boolean {\n if (item.active != null) {\n return item.active;\n }\n return index === this.items.length - 1;\n }\n}\n","<nav class=\"geo-breadcrumb\" aria-label=\"Breadcrumb\">\n <nz-breadcrumb class=\"geo-breadcrumb__antd\" [nzSeparator]=\"separatorTpl\">\n @for (item of items; track $index) {\n <nz-breadcrumb-item>\n @if (item.link && !isActive(item, $index)) {\n <a\n class=\"geo-breadcrumb__link\"\n [routerLink]=\"item.link\"\n [queryParams]=\"item.queryParams || null\"\n >\n {{ item.label }}\n </a>\n } @else {\n <span\n class=\"geo-breadcrumb__text\"\n [class.geo-breadcrumb__text--active]=\"isActive(item, $index)\"\n [attr.aria-current]=\"isActive(item, $index) ? 'page' : null\"\n >\n {{ item.label }}\n </span>\n }\n </nz-breadcrumb-item>\n }\n </nz-breadcrumb>\n</nav>\n\n<ng-template #separatorTpl>\n <span class=\"geo-breadcrumb__separator\" nz-icon nzType=\"right\" nzTheme=\"outline\"></span>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { GeoButtonAppearance, GeoButtonColor, GeoButtonTooltipPlacement } from './geo-button.types';\n\n@Component({\n selector: 'geo-button',\n standalone: true,\n imports: [CommonModule, NzIconModule, NzToolTipModule],\n templateUrl: './geo-button.component.html',\n styleUrl: './geo-button.component.scss',\n})\nexport class GeoButtonComponent {\n @Input() appearance: GeoButtonAppearance = 'primary';\n @Input() color: GeoButtonColor = 'brand';\n @Input() icon?: string;\n @Input() iconTheme: 'outline' | 'fill' | 'twotone' = 'outline';\n /** Vị trí icon: `start` (trái) hoặc `end` (phải). */\n @Input() iconPlacement: 'start' | 'end' = 'start';\n @Input() iconOnly = false;\n @Input() type: 'button' | 'submit' = 'button';\n @Input() disabled = false;\n /** Tooltip Ant Design (`nz-tooltip`). Ưu tiên hơn `title` native. */\n @Input() tooltip = '';\n @Input() tooltipPlacement: GeoButtonTooltipPlacement = 'top';\n /** Trạng thái active (vd. toolbar toggle đang bật). */\n @Input() active = false;\n /** Native `title` — fallback khi không set `tooltip`. */\n @Input() title = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n get tooltipTitle(): string {\n return this.tooltip || this.title || '';\n }\n\n get classNames(): Record<string, boolean> {\n return {\n [`geo-button--${this.appearance}`]: true,\n [`geo-button--${this.color}`]: true,\n 'geo-button--icon-only': this.iconOnly,\n 'geo-button--icon-end': !!this.icon && this.iconPlacement === 'end',\n 'geo-button--active': this.active,\n };\n }\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"disabled\"\n class=\"geo-button\"\n [ngClass]=\"classNames\"\n [nz-tooltip]=\"tooltipTitle\"\n [nzTooltipPlacement]=\"tooltipPlacement\"\n [nzTooltipTrigger]=\"tooltipTitle ? 'hover' : null\"\n [attr.aria-label]=\"tooltipTitle || null\"\n [attr.aria-pressed]=\"active ? true : null\"\n (click)=\"onClick($event)\"\n>\n @if (icon && iconPlacement === 'start') {\n <span class=\"geo-button__icon\">\n <span nz-icon [nzType]=\"icon\" [nzTheme]=\"iconTheme\"></span>\n </span>\n }\n @if (!iconOnly) {\n <span class=\"geo-button__label\">\n <ng-content></ng-content>\n </span>\n }\n @if (icon && iconPlacement === 'end') {\n <span class=\"geo-button__icon\">\n <span nz-icon [nzType]=\"icon\" [nzTheme]=\"iconTheme\"></span>\n </span>\n }\n</button>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\n\n@Component({\n selector: 'geo-checkbox',\n standalone: true,\n imports: [NgZorroAntdModule, FormsModule],\n templateUrl: './geo-checkbox.component.html',\n styleUrl: './geo-checkbox.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class GeoCheckboxComponent {\n @Input() label = '';\n @Input() checked = false;\n @Input() disabled = false;\n @Input() indeterminate = false;\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n onChange(value: boolean): void {\n this.checked = value;\n this.checkedChange.emit(value);\n }\n}\n","<label\n nz-checkbox\n class=\"geo-checkbox\"\n [nzDisabled]=\"disabled\"\n [nzIndeterminate]=\"indeterminate\"\n [(ngModel)]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n>{{ label }}</label>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { GeoButtonComponent } from '../geo-button/geo-button.component';\n\n@Component({\n selector: 'geo-confirm-modal',\n standalone: true,\n imports: [CommonModule, NgZorroAntdModule, NzIconModule, GeoButtonComponent],\n templateUrl: './geo-confirm-modal.component.html',\n styleUrl: './geo-confirm-modal.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class GeoConfirmModalComponent {\n @Input() visible = false;\n @Input() title = 'Xác nhận xoá';\n @Input() message = '';\n @Input() highlight = '';\n @Input() description = 'Hành động không thể hoàn tác, bạn chắc chắn muốn thực hiện?';\n @Input() cancelText = 'Hủy';\n @Input() confirmText = 'Xác nhận';\n @Input() confirmLoading = false;\n @Input() width: number | string = 445;\n @Input() maskClosable = false;\n @Input() closable = true;\n\n @Output() visibleChange = new EventEmitter<boolean>();\n @Output() confirm = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n\n get hasDefaultBody(): boolean {\n return !!(this.message || this.highlight || this.description);\n }\n\n onVisibleChange(visible: boolean): void {\n if (this.visible === visible) {\n return;\n }\n\n this.visibleChange.emit(visible);\n }\n\n onCancel(): void {\n this.visibleChange.emit(false);\n this.cancel.emit();\n }\n\n onConfirm(): void {\n this.confirm.emit();\n }\n}\n","<nz-modal\n [nzVisible]=\"visible\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMaskClosable]=\"maskClosable\"\n [nzWidth]=\"width\"\n nzWrapClassName=\"geo-confirm-modal-wrap\"\n nzClassName=\"geo-confirm-modal\"\n (nzVisibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container *nzModalContent>\n <div class=\"geo-confirm-modal__content\">\n <div class=\"geo-confirm-modal__header\">\n <h2 class=\"geo-confirm-modal__title\">{{ title }}</h2>\n @if (closable) {\n <button\n type=\"button\"\n class=\"geo-confirm-modal__close\"\n aria-label=\"Đóng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div class=\"geo-confirm-modal__body\">\n @if (hasDefaultBody) {\n <div class=\"geo-confirm-modal__message\">\n @if (message || highlight) {\n <p class=\"geo-confirm-modal__paragraph\">\n @if (message) {\n <span>{{ message }}</span>\n }\n @if (highlight) {\n <strong class=\"geo-confirm-modal__highlight\">“{{ highlight }}”</strong>\n }\n </p>\n }\n @if (description) {\n <p class=\"geo-confirm-modal__paragraph\">{{ description }}</p>\n }\n </div>\n } @else {\n <div class=\"geo-confirm-modal__message\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n\n <div class=\"geo-confirm-modal__footer\">\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelText }}\n </geo-button>\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [disabled]=\"confirmLoading\"\n (clicked)=\"onConfirm()\"\n >\n {{ confirmText }}\n </geo-button>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { GeoDatePickerMode, GeoDatePickerSize } from './geo-date-picker.types';\n\nlet uiDatePickerErrorId = 0;\n\n@Component({\n selector: 'geo-date-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, NgZorroAntdModule],\n templateUrl: './geo-date-picker.component.html',\n styleUrl: './geo-date-picker.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-date-picker-host',\n '[class.geo-date-picker-host--default]': 'size === \"default\"',\n '[class.geo-date-picker-host--small]': 'size === \"small\"',\n '[class.geo-date-picker-host--block]': 'block',\n '[class.geo-date-picker-host--error]': 'error',\n '[style.width]': 'hostWidth',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoDatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class GeoDatePickerComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() placeholder = 'Chọn ngày';\n @Input() format = 'dd/MM/yyyy';\n @Input() mode: GeoDatePickerMode = 'date';\n @Input() size: GeoDatePickerSize = 'default';\n @Input() disabled = false;\n @Input() required = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() allowClear = true;\n @Input() showToday = true;\n @Input() showTime = false;\n @Input() block = false;\n @Input() width?: number | string;\n @Input() disabledDate?: (current: Date) => boolean;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n\n readonly errorMessageId = `geo-date-picker-error-${++uiDatePickerErrorId}`;\n\n value: Date | null = null;\n\n private onChange: (value: Date | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get hostWidth(): string | null {\n if (this.block || this.width == null) {\n return null;\n }\n\n return typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n get controlClassNames(): Record<string, boolean> {\n return {\n 'geo-date-picker': true,\n [`geo-date-picker--${this.size}`]: true,\n };\n }\n\n onValueChange(value: Date | null): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n }\n\n writeValue(value: Date | null): void {\n this.value = value ?? null;\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-date-picker__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-date-picker__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<nz-date-picker\n [ngClass]=\"controlClassNames\"\n nzDropdownClassName=\"geo-date-picker__dropdown\"\n [nzPlaceHolder]=\"placeholder\"\n [nzFormat]=\"format\"\n [nzMode]=\"mode\"\n [nzDisabled]=\"disabled\"\n [nzAllowClear]=\"allowClear\"\n [nzShowToday]=\"showToday\"\n [nzShowTime]=\"showTime\"\n [nzDisabledDate]=\"disabledDate\"\n [ngModel]=\"value\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n (ngModelChange)=\"onValueChange($event)\"\n></nz-date-picker>\n\n@if (error && errorMessage) {\n <p class=\"geo-date-picker__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { GeoDateRangeSize, GeoDateRangeValue } from './geo-date-range-picker.types';\n\nlet uiDateRangeErrorId = 0;\n\n@Component({\n selector: 'geo-date-range-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, NgZorroAntdModule],\n templateUrl: './geo-date-range-picker.component.html',\n styleUrl: './geo-date-range-picker.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-date-range-picker-host',\n '[class.geo-date-range-picker-host--default]': 'size === \"default\"',\n '[class.geo-date-range-picker-host--small]': 'size === \"small\"',\n '[class.geo-date-range-picker-host--block]': 'block',\n '[class.geo-date-range-picker-host--error]': 'error',\n '[style.width]': 'hostWidth',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoDateRangePickerComponent),\n multi: true,\n },\n ],\n})\nexport class GeoDateRangePickerComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() placeholder: [string, string] = ['Từ ngày', 'Đến ngày'];\n @Input() format = 'dd/MM/yyyy';\n @Input() size: GeoDateRangeSize = 'default';\n @Input() disabled = false;\n @Input() required = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() allowClear = true;\n @Input() showTime = false;\n @Input() block = false;\n @Input() width?: number | string;\n @Input() disabledDate?: (current: Date) => boolean;\n @Input() separator = '→';\n\n @Output() valueChange = new EventEmitter<GeoDateRangeValue>();\n\n readonly errorMessageId = `geo-date-range-picker-error-${++uiDateRangeErrorId}`;\n\n value: GeoDateRangeValue = null;\n\n private onChange: (value: GeoDateRangeValue) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get hostWidth(): string | null {\n if (this.block || this.width == null) {\n return null;\n }\n\n return typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n get controlClassNames(): Record<string, boolean> {\n return {\n 'geo-date-range-picker': true,\n [`geo-date-range-picker--${this.size}`]: true,\n };\n }\n\n onValueChange(value: GeoDateRangeValue): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n }\n\n writeValue(value: GeoDateRangeValue): void {\n this.value = value ?? null;\n }\n\n registerOnChange(fn: (value: GeoDateRangeValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-date-range-picker__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-date-range-picker__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<nz-range-picker\n [ngClass]=\"controlClassNames\"\n nzDropdownClassName=\"geo-date-range-picker__dropdown\"\n [nzPlaceHolder]=\"placeholder\"\n [nzFormat]=\"format\"\n [nzDisabled]=\"disabled\"\n [nzAllowClear]=\"allowClear\"\n [nzShowTime]=\"showTime\"\n [nzDisabledDate]=\"disabledDate\"\n [nzSeparator]=\"separator\"\n [ngModel]=\"value\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n (ngModelChange)=\"onValueChange($event)\"\n></nz-range-picker>\n\n@if (error && errorMessage) {\n <p class=\"geo-date-range-picker__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GeoButtonComponent } from '../geo-button/geo-button.component';\n\nlet uiFilePickerErrorId = 0;\n\n@Component({\n selector: 'geo-file-picker',\n standalone: true,\n imports: [CommonModule, GeoButtonComponent],\n templateUrl: './geo-file-picker.component.html',\n styleUrl: './geo-file-picker.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-file-picker-host',\n '[class.geo-file-picker-host--block]': 'block',\n '[class.geo-file-picker-host--error]': 'error',\n '[class.geo-file-picker-host--disabled]': 'disabled',\n '[style.width]': 'hostWidth',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoFilePickerComponent),\n multi: true,\n },\n ],\n})\nexport class GeoFilePickerComponent implements ControlValueAccessor {\n @ViewChild('fileInput') fileInput?: ElementRef<HTMLInputElement>;\n\n @Input() label = 'Tải file';\n @Input() placeholder = 'Chọn giá trị';\n @Input() buttonText = 'Chọn file';\n @Input() required = false;\n @Input() disabled = false;\n @Input() accept = '';\n @Input() multiple = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() block = false;\n @Input() width?: number | string;\n /**\n * Tên file đã upload (server) — hiện khi chưa có File local trong CVA.\n * Dùng cho flow: chọn file → upload → giữ tên từ API.\n */\n @Input() selectedName = '';\n\n @Output() fileChange = new EventEmitter<File | File[] | null>();\n\n readonly errorMessageId = `geo-file-picker-error-${++uiFilePickerErrorId}`;\n\n value: File | File[] | null = null;\n\n private onChange: (value: File | File[] | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get hostWidth(): string | null {\n if (this.block || this.width == null) {\n return null;\n }\n\n return typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n get displayValue(): string {\n if (Array.isArray(this.value) && this.value.length > 0) {\n return this.value.map((file) => file.name).join(', ');\n }\n\n if (this.value && !Array.isArray(this.value)) {\n return this.value.name;\n }\n\n if (this.selectedName) {\n return this.selectedName;\n }\n\n return this.placeholder;\n }\n\n get hasValue(): boolean {\n if (Array.isArray(this.value)) {\n return this.value.length > 0;\n }\n\n if (this.value != null) {\n return true;\n }\n\n return !!this.selectedName;\n }\n\n openFilePicker(): void {\n if (this.disabled) {\n return;\n }\n\n this.fileInput?.nativeElement.click();\n }\n\n onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n const files = input.files;\n\n if (!files || files.length === 0) {\n return;\n }\n\n const nextValue = this.multiple ? Array.from(files) : files[0];\n this.setValue(nextValue);\n input.value = '';\n }\n\n private setValue(value: File | File[] | null): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.fileChange.emit(value);\n }\n\n writeValue(value: File | File[] | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: File | File[] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-file-picker__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-file-picker__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"geo-file-picker__control\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n>\n <span\n class=\"geo-file-picker__value\"\n [class.geo-file-picker__value--placeholder]=\"!hasValue\"\n >\n {{ displayValue }}\n </span>\n\n <input\n #fileInput\n class=\"geo-file-picker__input\"\n type=\"file\"\n tabindex=\"-1\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelected($event)\"\n />\n\n <geo-button\n class=\"geo-file-picker__button\"\n appearance=\"primary\"\n color=\"brand\"\n icon=\"plus\"\n [disabled]=\"disabled\"\n (clicked)=\"openFilePicker()\"\n >\n {{ buttonText }}\n </geo-button>\n</div>\n\n@if (error && errorMessage) {\n <p class=\"geo-file-picker__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import { NzUploadFile, NzUploadXHRArgs } from 'ng-zorro-antd/upload';\nimport { Subscription } from 'rxjs';\n\n/** Extends Ant Design upload file with progress metadata for GEO UI. */\nexport interface GeoUploadFile extends NzUploadFile {\n /** Bytes uploaded so far (for \"100Kb / 200Kb\"). */\n loaded?: number;\n /** Upload speed in bytes/sec (for \"870kb/sec\"). */\n speed?: number;\n}\n\nexport type GeoUploadCustomRequest = (item: NzUploadXHRArgs) => Subscription;\n\nexport function geoFormatBytes(bytes?: number | null): string {\n if (bytes == null || Number.isNaN(bytes)) {\n return '0Kb';\n }\n const kb = bytes / 1024;\n if (kb < 1024) {\n return `${Math.round(kb)}Kb`;\n }\n return `${(kb / 1024).toFixed(kb >= 10240 ? 0 : 1)}Mb`;\n}\n\nexport function geoFormatSpeed(bytesPerSec?: number | null): string {\n if (bytesPerSec == null || bytesPerSec <= 0) {\n return '';\n }\n const kb = bytesPerSec / 1024;\n if (kb < 1024) {\n return `${Math.round(kb)}kb/sec`;\n }\n return `${(kb / 1024).toFixed(1)}Mb/sec`;\n}\n\nexport function geoUploadPercent(file: GeoUploadFile): number {\n if (file.percent != null) {\n return Math.max(0, Math.min(100, Math.round(file.percent)));\n }\n if (file.status === 'done' || file.status === 'success') {\n return 100;\n }\n return 0;\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzUploadModule, NzUploadChangeParam, NzUploadFile, NzUploadXHRArgs } from 'ng-zorro-antd/upload';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n GeoUploadCustomRequest,\n GeoUploadFile,\n geoFormatBytes,\n geoFormatSpeed,\n geoUploadPercent,\n} from './geo-upload.types';\n\n/**\n * Upload kéo-thả theo design GEO (dropzone + danh sách file có progress).\n * Dựa trên `nz-upload` (Ant Design). Form field gọn dùng `geo-file-picker`.\n */\n@Component({\n selector: 'geo-upload',\n standalone: true,\n imports: [CommonModule, NzIconModule, NzUploadModule],\n templateUrl: './geo-upload.component.html',\n styleUrl: './geo-upload.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-upload-host',\n '[class.geo-upload-host--disabled]': 'disabled',\n '[class.geo-upload-host--error]': 'error',\n },\n})\nexport class GeoUploadComponent {\n private readonly cdr = inject(ChangeDetectorRef);\n\n /** Upload endpoint — bỏ trống nếu dùng `customRequest` / chỉ chọn file local. */\n @Input() action: string | ((file: NzUploadFile) => string | Observable<string>) = '';\n @Input() accept = '.png,.jpg,.jpeg,.svg';\n /** Max size (bytes). Default 1MB. `0` = không giới hạn. */\n @Input() maxSize = 1024 * 1024;\n @Input() multiple = true;\n @Input() disabled = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() hint =\n 'Chỉ cho phép file dạng .png, .jpg, .jpeg, .svg và dung lượng không quá 1Mb';\n @Input() titlePrefix = 'Kéo thả ảnh hoặc';\n @Input() selectText = 'Chọn file';\n @Input() titleSuffix = 'để tải lên';\n @Input() listTitle = 'Tập tin đính kèm';\n @Input() showListTitle = true;\n /** Controlled file list. */\n @Input() fileList: GeoUploadFile[] = [];\n @Input() headers?: {} | ((file: NzUploadFile) => {} | Observable<{}>);\n @Input() data?: {} | ((file: NzUploadFile) => {} | Observable<{}>);\n @Input() name = 'file';\n @Input() withCredentials = false;\n @Input() directory = false;\n /** Custom XHR — mặc định simulate progress khi không có `action`. */\n @Input() customRequest?: GeoUploadCustomRequest;\n @Input() beforeUpload?: (\n file: NzUploadFile,\n fileList: NzUploadFile[]\n ) => boolean | Observable<boolean>;\n\n @Output() fileListChange = new EventEmitter<GeoUploadFile[]>();\n @Output() change = new EventEmitter<NzUploadChangeParam>();\n @Output() remove = new EventEmitter<GeoUploadFile>();\n @Output() reject = new EventEmitter<{ file: File; reason: 'type' | 'size' }>();\n\n readonly formatBytes = geoFormatBytes;\n readonly formatSpeed = geoFormatSpeed;\n readonly percentOf = geoUploadPercent;\n\n get resolvedCustomRequest(): GeoUploadCustomRequest | undefined {\n if (this.customRequest) {\n return this.customRequest;\n }\n if (!this.action) {\n return (item) => this.simulateUpload(item);\n }\n return undefined;\n }\n\n onFileListChange(list: NzUploadFile[]): void {\n this.fileList = list as GeoUploadFile[];\n this.fileListChange.emit(this.fileList);\n }\n\n onChange(event: NzUploadChangeParam): void {\n this.fileList = event.fileList as GeoUploadFile[];\n this.fileListChange.emit(this.fileList);\n this.change.emit(event);\n }\n\n handleBeforeUpload = (\n file: NzUploadFile,\n _fileList: NzUploadFile[]\n ): boolean | Observable<boolean> => {\n if (this.beforeUpload) {\n return this.beforeUpload(file, _fileList);\n }\n\n const raw = file as unknown as File;\n const name = (file.name || raw.name || '').toLowerCase();\n if (this.accept) {\n const tokens = this.accept\n .split(',')\n .map((t) => t.trim().toLowerCase())\n .filter(Boolean);\n const ok = tokens.some((token) => {\n if (token.startsWith('.')) {\n return name.endsWith(token);\n }\n if (token.includes('/*')) {\n const prefix = token.replace('/*', '');\n return (file.type || raw.type || '').startsWith(prefix);\n }\n return (file.type || raw.type || '') === token;\n });\n if (!ok) {\n this.reject.emit({ file: raw, reason: 'type' });\n return false;\n }\n }\n\n const size = file.size ?? raw.size ?? 0;\n if (this.maxSize > 0 && size > this.maxSize) {\n this.reject.emit({ file: raw, reason: 'size' });\n return false;\n }\n\n return true;\n };\n\n onRemove = (file: NzUploadFile): boolean => {\n this.remove.emit(file as GeoUploadFile);\n return true;\n };\n\n removeFile(file: GeoUploadFile, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n if (this.onRemove(file) === false) {\n return;\n }\n this.fileList = this.fileList.filter((item) => item.uid !== file.uid);\n this.fileListChange.emit(this.fileList);\n }\n\n progressLabel(file: GeoUploadFile): string {\n const total = file.size ?? file.originFileObj?.size ?? 0;\n const percent = this.percentOf(file);\n const loaded =\n file.loaded != null\n ? file.loaded\n : Math.round((percent / 100) * total);\n return `${this.formatBytes(loaded)}/ ${this.formatBytes(total)} (${percent}%)`;\n }\n\n speedLabel(file: GeoUploadFile): string {\n return this.formatSpeed(file.speed);\n }\n\n /** Demo / local upload khi không có action. */\n private simulateUpload(item: NzUploadXHRArgs): Subscription {\n const file = item.file as GeoUploadFile;\n const total = file.size ?? file.originFileObj?.size ?? 0;\n let loaded = 0;\n const started = Date.now();\n\n file.status = 'uploading';\n file.percent = 0;\n file.loaded = 0;\n file.speed = 0;\n\n const timer = window.setInterval(() => {\n const step = Math.max(total * 0.08, 16 * 1024);\n loaded = Math.min(total, loaded + step);\n const elapsedSec = Math.max((Date.now() - started) / 1000, 0.001);\n const percent = total > 0 ? Math.round((loaded / total) * 100) : 100;\n\n file.loaded = loaded;\n file.percent = percent;\n file.speed = loaded / elapsedSec;\n item.onProgress?.({ percent }, file);\n this.cdr.markForCheck();\n\n if (loaded >= total) {\n window.clearInterval(timer);\n file.status = 'done';\n file.percent = 100;\n file.loaded = total;\n item.onSuccess?.({}, file, null);\n this.cdr.markForCheck();\n }\n }, 200);\n\n return new Subscription(() => window.clearInterval(timer));\n }\n}\n","<div class=\"geo-upload\">\n <nz-upload\n class=\"geo-upload__dragger\"\n nzType=\"drag\"\n [nzAction]=\"action\"\n [nzAccept]=\"accept\"\n [nzMultiple]=\"multiple\"\n [nzDisabled]=\"disabled\"\n [nzDirectory]=\"directory\"\n [nzName]=\"name\"\n [nzHeaders]=\"headers\"\n [nzData]=\"data\"\n [nzWithCredentials]=\"withCredentials\"\n [nzFileList]=\"fileList\"\n [nzShowUploadList]=\"false\"\n [nzBeforeUpload]=\"handleBeforeUpload\"\n [nzCustomRequest]=\"resolvedCustomRequest\"\n [nzRemove]=\"onRemove\"\n (nzFileListChange)=\"onFileListChange($event)\"\n (nzChange)=\"onChange($event)\"\n >\n <div class=\"geo-upload__dropzone\">\n <span class=\"geo-upload__icon-wrap\" aria-hidden=\"true\">\n <span class=\"geo-upload__icon\" nz-icon nzType=\"cloud-upload\" nzTheme=\"outline\"></span>\n </span>\n\n <div class=\"geo-upload__copy\">\n <p class=\"geo-upload__title\">\n <span>{{ titlePrefix }} </span>\n <span class=\"geo-upload__select\">{{ selectText }}</span>\n <span> {{ titleSuffix }}</span>\n </p>\n\n @if (hint) {\n <p class=\"geo-upload__hint\">{{ hint }}</p>\n }\n </div>\n </div>\n </nz-upload>\n\n @if (fileList.length > 0) {\n <div class=\"geo-upload__list\">\n @if (showListTitle) {\n <h4 class=\"geo-upload__list-title\">{{ listTitle }}</h4>\n }\n\n <ul class=\"geo-upload__files\">\n @for (file of fileList; track file.uid) {\n <li class=\"geo-upload__file\" [class.geo-upload__file--error]=\"file.status === 'error'\">\n <div class=\"geo-upload__file-icon\" aria-hidden=\"true\">\n <span nz-icon nzType=\"file\" nzTheme=\"outline\"></span>\n </div>\n\n <div class=\"geo-upload__file-main\">\n <div class=\"geo-upload__file-row\">\n <span class=\"geo-upload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <button\n type=\"button\"\n class=\"geo-upload__file-remove\"\n aria-label=\"Xóa tập tin\"\n [disabled]=\"disabled\"\n (click)=\"removeFile(file, $event)\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n </div>\n\n <div class=\"geo-upload__progress\" role=\"progressbar\" [attr.aria-valuenow]=\"percentOf(file)\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <div class=\"geo-upload__progress-bar\" [style.width.%]=\"percentOf(file)\"></div>\n </div>\n\n <div class=\"geo-upload__file-meta\">\n <span>{{ progressLabel(file) }}</span>\n <span>{{ speedLabel(file) }}</span>\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n\n @if (error && errorMessage) {\n <p class=\"geo-upload__error\" role=\"alert\">{{ errorMessage }}</p>\n }\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { GeoButtonComponent } from '../geo-button/geo-button.component';\n\n/**\n * Modal form dùng chung — API bám Ant Design Modal / ng-zorro nz-modal.\n * Header + footer cố định; body có thể scroll (`bodyScroll`).\n */\n@Component({\n selector: 'geo-form-modal',\n standalone: true,\n imports: [CommonModule, NgZorroAntdModule, NzIconModule, GeoButtonComponent],\n templateUrl: './geo-form-modal.component.html',\n styleUrl: './geo-form-modal.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class GeoFormModalComponent {\n /** Tương đương `open` (antd) / `nzVisible` (ng-zorro). */\n @Input() open = false;\n @Input() title = '';\n /** Title chữ in hoa. Default `true` theo design. */\n @Input() titleUppercase = true;\n @Input() okText = 'Lưu';\n @Input() cancelText = 'Hủy';\n /** Icon nút cancel (vd. `left` cho Quay lại). */\n @Input() cancelIcon?: string;\n @Input() cancelIconPlacement: 'start' | 'end' = 'start';\n /** Icon nút OK (vd. `right` cho Tiếp theo). */\n @Input() okIcon?: string;\n @Input() okIconPlacement: 'start' | 'end' = 'end';\n /** Nút phụ (vd. Lưu và khởi tạo lại). Chỉ hiện khi có text và không readonly. */\n @Input() secondaryOkText = '';\n /** Loading trên nút OK — giống antd `confirmLoading` / nz `nzOkLoading`. */\n @Input() confirmLoading = false;\n /** Disable nút OK — giống antd `okButtonProps.disabled` / nz `nzOkDisabled`. */\n @Input() okDisabled = false;\n /** Ẩn nút OK (xem chi tiết). */\n @Input() readonly = false;\n @Input() width: number | string = 720;\n @Input() closable = true;\n @Input() mask = true;\n @Input() maskClosable = false;\n @Input() keyboard = true;\n @Input() centered = true;\n @Input() zIndex = 1000;\n @Input() className = '';\n @Input() wrapClassName = '';\n /** Body cuộn, header/footer cố định. */\n @Input() bodyScroll = true;\n /** Max-height của vùng body khi `bodyScroll` (vd `'60vh'`, `400`). */\n @Input() bodyMaxHeight: string | number = '60vh';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() ok = new EventEmitter<void>();\n @Output() secondaryOk = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n @Output() afterOpen = new EventEmitter<void>();\n @Output() afterClose = new EventEmitter<void>();\n\n get resolvedWrapClassName(): string {\n return ['geo-form-modal-wrap', this.wrapClassName].filter(Boolean).join(' ');\n }\n\n get resolvedClassName(): string {\n return ['geo-form-modal', this.className].filter(Boolean).join(' ');\n }\n\n get bodyMaxHeightCss(): string {\n return typeof this.bodyMaxHeight === 'number'\n ? `${this.bodyMaxHeight}px`\n : this.bodyMaxHeight;\n }\n\n onOpenChange(open: boolean): void {\n if (this.open === open) {\n return;\n }\n this.openChange.emit(open);\n }\n\n onCancel(): void {\n this.openChange.emit(false);\n this.cancel.emit();\n }\n\n onOk(): void {\n if (!this.okDisabled && !this.confirmLoading) {\n this.ok.emit();\n }\n }\n\n onSecondaryOk(): void {\n if (!this.okDisabled && !this.confirmLoading) {\n this.secondaryOk.emit();\n }\n }\n}\n","<nz-modal\n [nzVisible]=\"open\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMask]=\"mask\"\n [nzMaskClosable]=\"maskClosable\"\n [nzKeyboard]=\"keyboard\"\n [nzCentered]=\"centered\"\n [nzWidth]=\"width\"\n [nzZIndex]=\"zIndex\"\n [nzWrapClassName]=\"resolvedWrapClassName\"\n [nzClassName]=\"resolvedClassName\"\n (nzVisibleChange)=\"onOpenChange($event)\"\n (nzAfterOpen)=\"afterOpen.emit()\"\n (nzAfterClose)=\"afterClose.emit()\"\n>\n <ng-container *nzModalContent>\n <div\n class=\"geo-form-modal__content\"\n [class.geo-form-modal__content--body-scroll]=\"bodyScroll\"\n >\n <div class=\"geo-form-modal__header\">\n <h2\n class=\"geo-form-modal__title\"\n [class.geo-form-modal__title--uppercase]=\"titleUppercase\"\n >\n {{ title }}\n </h2>\n @if (closable) {\n <button\n type=\"button\"\n class=\"geo-form-modal__close\"\n aria-label=\"Đóng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div\n class=\"geo-form-modal__body\"\n [style.--geo-form-modal-body-max-height]=\"bodyScroll ? bodyMaxHeightCss : null\"\n >\n <ng-content></ng-content>\n </div>\n\n <div class=\"geo-form-modal__footer\">\n <ng-content select=\"[footerStart]\"></ng-content>\n\n <div class=\"geo-form-modal__footer-actions\">\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n [icon]=\"cancelIcon\"\n [iconPlacement]=\"cancelIconPlacement\"\n (clicked)=\"onCancel()\"\n >\n {{ readonly ? 'Đóng' : cancelText }}\n </geo-button>\n @if (!readonly && secondaryOkText) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"save\"\n [disabled]=\"okDisabled || confirmLoading\"\n (clicked)=\"onSecondaryOk()\"\n >\n {{ secondaryOkText }}\n </geo-button>\n }\n @if (!readonly) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [icon]=\"confirmLoading ? 'loading' : okIcon\"\n [iconPlacement]=\"okIconPlacement\"\n [disabled]=\"okDisabled || confirmLoading\"\n (clicked)=\"onOk()\"\n >\n {{ okText }}\n </geo-button>\n }\n </div>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n","export type GeoIconTheme = 'outline' | 'fill' | 'twotone';\n\nexport type GeoIconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number | string;\n\nexport const GEO_ICON_SIZE_MAP: Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', string> = {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '20px',\n xl: '24px',\n};\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { GEO_ICON_SIZE_MAP, GeoIconSize, GeoIconTheme } from './geo-icon.types';\n\n/**\n * Icon wrapper — domain dùng `geo-icon`, không dùng `nz-icon` trực tiếp.\n * Wrap Ant Design icons (đã register qua `NZ_ICONS` ở app/Storybook).\n */\n@Component({\n selector: 'geo-icon',\n standalone: true,\n imports: [NzIconModule],\n templateUrl: './geo-icon.component.html',\n styleUrl: './geo-icon.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-icon-host',\n '[style.--geo-icon-size]': 'resolvedSize',\n '[style.color]': 'color || null',\n '[class.geo-icon-host--spin]': 'spin',\n },\n})\nexport class GeoIconComponent {\n /** Tên icon Ant Design (vd. `close`, `search`, `appstore`). */\n @Input({ required: true }) type!: string;\n @Input() theme: GeoIconTheme = 'outline';\n @Input() spin = false;\n /** xs | sm | md | lg | xl | number(px) | CSS size string */\n @Input() size: GeoIconSize = 'md';\n /** CSS color — ưu tiên design token, vd. `var(--geo-color-primary-default)` */\n @Input() color?: string;\n\n get resolvedSize(): string {\n if (typeof this.size === 'number') {\n return `${this.size}px`;\n }\n if (this.size in GEO_ICON_SIZE_MAP) {\n return GEO_ICON_SIZE_MAP[this.size as keyof typeof GEO_ICON_SIZE_MAP];\n }\n return String(this.size);\n }\n}\n","<span\n class=\"geo-icon\"\n nz-icon\n [nzType]=\"type\"\n [nzTheme]=\"theme\"\n [nzSpin]=\"spin\"\n></span>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nlet uiInputErrorId = 0;\n\nexport type GeoInputType = 'text' | 'number' | 'password' | 'email';\n\n@Component({\n selector: 'geo-input',\n standalone: true,\n imports: [CommonModule, FormsModule, NzIconModule],\n templateUrl: './geo-input.component.html',\n styleUrl: './geo-input.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-input-host',\n '[class.geo-input-host--block]': 'block',\n '[class.geo-input-host--error]': 'error',\n '[style.width]': 'hostWidth',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoInputComponent),\n multi: true,\n },\n ],\n})\nexport class GeoInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() placeholder = '';\n @Input() type: GeoInputType = 'text';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() maxlength?: number;\n @Input() prefixIcon?: string;\n @Input() suffixIcon?: string;\n @Input() allowClear = false;\n @Input() block = false;\n @Input() width?: number | string;\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() enterPressed = new EventEmitter<void>();\n\n readonly errorMessageId = `geo-input-error-${++uiInputErrorId}`;\n\n value = '';\n\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get hostWidth(): string | null {\n if (this.block || this.width == null) {\n return null;\n }\n\n return typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n get showClear(): boolean {\n return this.allowClear && !this.disabled && !this.readonly && !!this.value;\n }\n\n onInput(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n onClear(): void {\n this.onInput('');\n }\n\n writeValue(value: string | number | null): void {\n this.value = value == null ? '' : String(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-input__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-input__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"geo-input__control\"\n [class.geo-input__control--disabled]=\"disabled\"\n [class.geo-input__control--error]=\"error\"\n>\n @if (prefixIcon) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"prefixIcon\" nzTheme=\"outline\"></span>\n }\n\n <input\n class=\"geo-input__field\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength ?? null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"enterPressed.emit()\"\n />\n\n @if (showClear) {\n <button type=\"button\" class=\"geo-input__clear\" aria-label=\"Xóa nội dung\" (click)=\"onClear()\">\n <span nz-icon nzType=\"close-circle\" nzTheme=\"fill\"></span>\n </button>\n }\n\n @if (suffixIcon) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"suffixIcon\" nzTheme=\"outline\"></span>\n }\n</div>\n\n@if (error && errorMessage) {\n <p class=\"geo-input__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\n\n/**\n * Pagination gọn — wrap `nz-pagination`. Dùng cho panel/map (không kèm size changer như `geo-table-pagination`).\n */\n@Component({\n selector: 'geo-pagination',\n standalone: true,\n imports: [NzPaginationModule],\n templateUrl: './geo-pagination.component.html',\n styleUrl: './geo-pagination.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'geo-pagination-host' },\n})\nexport class GeoPaginationComponent {\n @Input() pageIndex = 1;\n @Input() pageSize = 10;\n @Input() total = 0;\n @Input() size: 'default' | 'small' = 'default';\n @Input() simple = false;\n @Input() hideOnSinglePage = false;\n @Input() showSizeChanger = false;\n @Input() pageSizeOptions: number[] = [5, 10, 20, 50];\n\n @Output() pageIndexChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n\n onPageIndexChange(page: number): void {\n this.pageIndex = page;\n this.pageIndexChange.emit(page);\n }\n\n onPageSizeChange(size: number): void {\n this.pageSize = size;\n this.pageSizeChange.emit(size);\n }\n}\n","<div class=\"geo-pagination\">\n <nz-pagination\n [nzSize]=\"size\"\n [nzSimple]=\"simple\"\n [nzPageIndex]=\"pageIndex\"\n [nzPageSize]=\"pageSize\"\n [nzTotal]=\"total\"\n [nzHideOnSinglePage]=\"hideOnSinglePage\"\n [nzShowSizeChanger]=\"showSizeChanger\"\n [nzPageSizeOptions]=\"pageSizeOptions\"\n (nzPageIndexChange)=\"onPageIndexChange($event)\"\n (nzPageSizeChange)=\"onPageSizeChange($event)\"\n ></nz-pagination>\n</div>\n","export type GeoTypographyVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'subtitle'\n | 'body'\n | 'body-small'\n | 'caption'\n | 'overline'\n | 'tiny';\n\nexport type GeoTypographyColor =\n | 'default'\n | 'secondary'\n | 'primary'\n | 'success'\n | 'warning'\n | 'danger'\n | 'disabled';\n\n/** Semantic HTML element rendered for each variant. */\nexport const GEO_TYPOGRAPHY_TAG: Record<GeoTypographyVariant, string> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n subtitle: 'p',\n body: 'p',\n 'body-small': 'p',\n caption: 'span',\n overline: 'span',\n tiny: 'span',\n};\n\nexport const GEO_TYPOGRAPHY_VARIANTS: {\n variant: GeoTypographyVariant;\n label: string;\n size: string;\n weight: string;\n lineHeight: string;\n usage: string;\n}[] = [\n {\n variant: 'h1',\n label: 'Heading 1',\n size: '28px',\n weight: 'Bold (700)',\n lineHeight: '36px',\n usage: 'Tiêu đề trang chính',\n },\n {\n variant: 'h2',\n label: 'Heading 2',\n size: '24px',\n weight: 'Bold (700)',\n lineHeight: '32px',\n usage: 'Tiêu đề section',\n },\n {\n variant: 'h3',\n label: 'Heading 3',\n size: '20px',\n weight: 'Bold (700)',\n lineHeight: '28px',\n usage: 'Tiêu đề component, section header',\n },\n {\n variant: 'h4',\n label: 'Heading 4',\n size: '16px',\n weight: 'Bold (700)',\n lineHeight: '24px',\n usage: 'Tiêu đề card, form section',\n },\n {\n variant: 'subtitle',\n label: 'Subtitle',\n size: '14px',\n weight: 'Semi Bold (600)',\n lineHeight: '20px',\n usage: 'Label, form label, table header',\n },\n {\n variant: 'body',\n label: 'Body',\n size: '14px',\n weight: 'Regular (400)',\n lineHeight: '20px',\n usage: 'Nội dung chính, input text',\n },\n {\n variant: 'body-small',\n label: 'Body Small',\n size: '13px',\n weight: 'Regular (400)',\n lineHeight: '18px',\n usage: 'Mô tả phụ, toast message',\n },\n {\n variant: 'caption',\n label: 'Caption',\n size: '12px',\n weight: 'Regular (400)',\n lineHeight: '16px',\n usage: 'Helper text, timestamp',\n },\n {\n variant: 'overline',\n label: 'Overline',\n size: '11px',\n weight: 'Semi Bold (600)',\n lineHeight: '16px',\n usage: 'Badge text, status label',\n },\n {\n variant: 'tiny',\n label: 'Tiny',\n size: '10px',\n weight: 'Regular (400)',\n lineHeight: '14px',\n usage: 'Hex code, footnote',\n },\n];\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport {\n GEO_TYPOGRAPHY_TAG,\n GeoTypographyColor,\n GeoTypographyVariant,\n} from './geo-typography.types';\n\n/**\n * Typography based on Ant Design Typography, styled with GEO type scale (Inter).\n *\n * @example\n * ```html\n * <geo-typography variant=\"h1\">Page title</geo-typography>\n * <geo-typography variant=\"body\" color=\"secondary\">Helper</geo-typography>\n * ```\n */\n@Component({\n selector: 'geo-typography',\n standalone: true,\n template: `<ng-content></ng-content>`,\n styleUrl: './geo-typography.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClassList',\n '[attr.role]': 'headingRole',\n '[attr.aria-level]': 'headingLevel',\n },\n})\nexport class GeoTypographyComponent {\n /** Type scale variant from the design system. */\n @Input() variant: GeoTypographyVariant = 'body';\n /** Semantic text color. */\n @Input() color: GeoTypographyColor = 'default';\n /** Force bold weight (overrides variant weight when true). */\n @Input() strong = false;\n /** Underline text decoration. */\n @Input() underline = false;\n /** Strikethrough text decoration. */\n @Input() delete = false;\n /** Mark / highlight background. */\n @Input() mark = false;\n /** Monospace code appearance. */\n @Input() code = false;\n /** Disabled appearance */\n @Input() disabled = false;\n\n get hostClassList(): string {\n const classes = [\n 'geo-typography',\n 'ant-typography',\n `geo-typography--${this.variant}`,\n `geo-typography--color-${this.color}`,\n ];\n if (this.strong) classes.push('geo-typography--strong');\n if (this.underline) classes.push('geo-typography--underline');\n if (this.delete) classes.push('geo-typography--delete');\n if (this.mark) classes.push('geo-typography--mark');\n if (this.code) classes.push('geo-typography--code');\n if (this.disabled) classes.push('geo-typography--disabled', 'ant-typography-disabled');\n if (this.nzType) classes.push(`ant-typography-${this.nzType}`);\n return classes.join(' ');\n }\n\n get headingRole(): string | null {\n const tag = GEO_TYPOGRAPHY_TAG[this.variant];\n return tag.startsWith('h') ? 'heading' : null;\n }\n\n get headingLevel(): number | null {\n switch (this.variant) {\n case 'h1':\n return 1;\n case 'h2':\n return 2;\n case 'h3':\n return 3;\n case 'h4':\n return 4;\n default:\n return null;\n }\n }\n\n get nzType(): 'secondary' | 'success' | 'warning' | 'danger' | undefined {\n switch (this.color) {\n case 'secondary':\n return 'secondary';\n case 'success':\n return 'success';\n case 'warning':\n return 'warning';\n case 'danger':\n return 'danger';\n default:\n return undefined;\n }\n }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GeoTypographyComponent } from '../geo-typography/geo-typography.component';\nimport { GeoTypographyVariant } from '../geo-typography/geo-typography.types';\n\n/**\n * Page title GEO — chữ in hoa đậm + gạch chân ngắn màu primary (theo design).\n */\n@Component({\n selector: 'geo-page-title',\n standalone: true,\n imports: [CommonModule, GeoTypographyComponent],\n templateUrl: './geo-page-title.component.html',\n styleUrl: './geo-page-title.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-page-title-host',\n },\n})\nexport class GeoPageTitleComponent {\n /** Nội dung tiêu đề. */\n @Input() title = '';\n /** Tự chuyển uppercase. Default `true`. */\n @Input() uppercase = true;\n /** Chiều rộng gạch chân (px hoặc CSS size). Default `56px`. */\n @Input() accentWidth: number | string = 56;\n /** Độ dày gạch chân. Default `4px`. */\n @Input() accentHeight: number | string = 4;\n /** Heading level → geo-typography variant. */\n @Input() level: 1 | 2 | 3 | 4 = 3;\n\n get typographyVariant(): GeoTypographyVariant {\n return `h${this.level}` as GeoTypographyVariant;\n }\n\n get accentWidthCss(): string {\n return typeof this.accentWidth === 'number'\n ? `${this.accentWidth}px`\n : this.accentWidth;\n }\n\n get accentHeightCss(): string {\n return typeof this.accentHeight === 'number'\n ? `${this.accentHeight}px`\n : this.accentHeight;\n }\n}\n","<div\n class=\"geo-page-title\"\n [class.geo-page-title--uppercase]=\"uppercase\"\n>\n <geo-typography [variant]=\"typographyVariant\">\n @if (title) {\n {{ title }}\n } @else {\n <ng-content></ng-content>\n }\n </geo-typography>\n <span\n class=\"geo-page-title__accent\"\n aria-hidden=\"true\"\n [style.width]=\"accentWidthCss\"\n [style.height]=\"accentHeightCss\"\n ></span>\n</div>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport {\n GeoRadioButtonAppearance,\n GeoRadioLayout,\n GeoRadioOption,\n GeoRadioSize,\n} from './geo-radio.types';\n\nlet uiRadioErrorId = 0;\n\n@Component({\n selector: 'geo-radio',\n standalone: true,\n imports: [CommonModule, FormsModule, NgZorroAntdModule],\n templateUrl: './geo-radio.component.html',\n styleUrl: './geo-radio.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-radio-host',\n '[class.geo-radio-host--block]': 'block',\n '[class.geo-radio-host--error]': 'error',\n '[class.geo-radio-host--vertical]': 'layout === \"vertical\"',\n '[class.geo-radio-host--button]': 'buttonStyle',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoRadioComponent),\n multi: true,\n },\n ],\n})\nexport class GeoRadioComponent implements ControlValueAccessor {\n @Input() options: GeoRadioOption[] = [];\n @Input() label = '';\n @Input() size: GeoRadioSize = 'default';\n @Input() layout: GeoRadioLayout = 'horizontal';\n /** `true` → dùng `nz-radio-button` thay vì `nz-radio` */\n @Input() buttonStyle = false;\n /** Chỉ áp dụng khi `buttonStyle: true` */\n @Input() buttonAppearance: GeoRadioButtonAppearance = 'outline';\n @Input() disabled = false;\n @Input() required = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() block = false;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n\n readonly errorMessageId = `geo-radio-error-${++uiRadioErrorId}`;\n\n value: string | number | null = null;\n\n private onChange: (value: string | number | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n onValueChange(value: string | number | null): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n }\n\n writeValue(value: string | number | null): void {\n this.value = value ?? null;\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-radio__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-radio__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<nz-radio-group\n class=\"geo-radio\"\n [class.geo-radio--vertical]=\"layout === 'vertical'\"\n [nzSize]=\"size\"\n [nzDisabled]=\"disabled\"\n [nzButtonStyle]=\"buttonAppearance\"\n [ngModel]=\"value\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n (ngModelChange)=\"onValueChange($event)\"\n>\n @for (option of options; track option.value) {\n @if (buttonStyle) {\n <label\n nz-radio-button\n class=\"geo-radio__item\"\n [nzValue]=\"option.value\"\n [nzDisabled]=\"option.disabled ?? false\"\n >\n {{ option.label }}\n </label>\n } @else {\n <label\n nz-radio\n class=\"geo-radio__item\"\n [nzValue]=\"option.value\"\n [nzDisabled]=\"option.disabled ?? false\"\n >\n {{ option.label }}\n </label>\n }\n }\n</nz-radio-group>\n\n@if (error && errorMessage) {\n <p class=\"geo-radio__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { GeoSelectMode, GeoSelectOption, GeoSelectSize } from './geo-select.types';\n\nlet uiSelectErrorId = 0;\n\n@Component({\n selector: 'geo-select',\n standalone: true,\n imports: [CommonModule, FormsModule, NgZorroAntdModule],\n templateUrl: './geo-select.component.html',\n styleUrl: './geo-select.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-select-host',\n '[class.geo-select-host--default]': 'size === \"default\"',\n '[class.geo-select-host--small]': 'size === \"small\"',\n '[class.geo-select-host--block]': 'block',\n '[class.geo-select-host--error]': 'error',\n '[style.width]': 'hostWidth',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoSelectComponent),\n multi: true,\n },\n ],\n})\nexport class GeoSelectComponent implements ControlValueAccessor {\n @Input() options: GeoSelectOption[] = [];\n @Input() label = '';\n @Input() placeholder = 'Chọn giá trị';\n @Input() size: GeoSelectSize = 'default';\n @Input() mode: GeoSelectMode = 'default';\n @Input() disabled = false;\n @Input() required = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() allowClear = true;\n @Input() showSearch = false;\n @Input() block = false;\n @Input() width?: number | string;\n\n @Output() valueChange = new EventEmitter<string | number | Array<string | number> | null>();\n\n readonly errorMessageId = `geo-select-error-${++uiSelectErrorId}`;\n\n value: string | number | Array<string | number> | null = null;\n\n private onChange: (value: string | number | Array<string | number> | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n get hostWidth(): string | null {\n if (this.block || this.width == null) {\n return null;\n }\n\n return typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n get controlClassNames(): Record<string, boolean> {\n return {\n 'geo-select': true,\n [`geo-select--${this.size}`]: true,\n };\n }\n\n onValueChange(value: string | number | Array<string | number> | null): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n }\n\n writeValue(value: string | number | Array<string | number> | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: string | number | Array<string | number> | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-select__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-select__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<nz-select\n [ngClass]=\"controlClassNames\"\n nzDropdownClassName=\"geo-select__dropdown\"\n [nzPlaceHolder]=\"placeholder\"\n [nzDisabled]=\"disabled\"\n [nzAllowClear]=\"allowClear\"\n [nzShowSearch]=\"showSearch\"\n [nzMode]=\"mode\"\n [nzOptionHeightPx]=\"36\"\n [nzOptionOverflowSize]=\"10\"\n [ngModel]=\"value\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n (ngModelChange)=\"onValueChange($event)\"\n>\n @for (option of options; track option.value) {\n <nz-option\n [nzLabel]=\"option.label\"\n [nzValue]=\"option.value\"\n [nzDisabled]=\"option.disabled ?? false\"\n ></nz-option>\n }\n</nz-select>\n\n@if (error && errorMessage) {\n <p class=\"geo-select__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\n\n/**\n * Slider (opacity / range) — wrap `nz-slider`. Domain dùng `geo-slider`, không import NzSliderModule.\n */\n@Component({\n selector: 'geo-slider',\n standalone: true,\n imports: [FormsModule, NzSliderModule],\n templateUrl: './geo-slider.component.html',\n styleUrl: './geo-slider.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'geo-slider-host' },\n})\nexport class GeoSliderComponent {\n @Input() value = 0;\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 1;\n @Input() disabled = false;\n @Input() tipFormatter?: (value: number) => string;\n\n @Output() valueChange = new EventEmitter<number>();\n\n onChange(next: number): void {\n this.value = next;\n this.valueChange.emit(next);\n }\n}\n","<div class=\"geo-slider\">\n <nz-slider\n [ngModel]=\"value\"\n (ngModelChange)=\"onChange($event)\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzStep]=\"step\"\n [nzDisabled]=\"disabled\"\n [nzTipFormatter]=\"tipFormatter\"\n ></nz-slider>\n</div>\n","/**\n * Semantic color variants for status badges (design: Status Badge Colors).\n */\nexport type GeoStatusColor =\n | 'success'\n | 'primary'\n | 'error'\n | 'warning'\n | 'info'\n | 'teal'\n | 'neutral';\n\n/**\n * Preset keys — semantic colors + legacy aliases used by tables/forms.\n */\nexport type GeoStatusPreset =\n | GeoStatusColor\n | 'completed'\n | 'cancelled'\n | 'in_progress'\n | 'adjusting';\n\n/** Map legacy / alias presets → semantic color. */\nexport const GEO_STATUS_COLOR_MAP: Record<GeoStatusPreset, GeoStatusColor> = {\n success: 'success',\n primary: 'primary',\n error: 'error',\n warning: 'warning',\n info: 'info',\n teal: 'teal',\n neutral: 'neutral',\n completed: 'success',\n cancelled: 'error',\n in_progress: 'primary',\n adjusting: 'warning',\n};\n\nexport const GEO_STATUS_LABELS: Record<GeoStatusPreset, string> = {\n success: 'Sẵn sàng',\n primary: 'Đang mượn',\n error: 'Từ chối',\n warning: 'Bản nháp',\n info: 'Đã nộp',\n teal: 'Trả kết quả',\n neutral: 'Chưa xử lý',\n completed: 'Hoàn thành',\n cancelled: 'Hủy bỏ',\n in_progress: 'Đang thực hiện',\n adjusting: 'Đang điều chỉnh',\n};\n\n/** @deprecated Use GEO_STATUS_LABELS */\nexport const UI_STATUS_LABELS = GEO_STATUS_LABELS;\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n GEO_STATUS_COLOR_MAP,\n GEO_STATUS_LABELS,\n GeoStatusColor,\n GeoStatusPreset,\n} from './geo-status-tag.types';\n\n@Component({\n selector: 'geo-status-tag',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './geo-status-tag.component.html',\n styleUrl: './geo-status-tag.component.scss',\n})\nexport class GeoStatusTagComponent {\n /**\n * Status preset or free-form string.\n * Semantic: success | primary | error | warning | info | teal | neutral\n * Legacy: completed | cancelled | in_progress | adjusting\n */\n @Input() status: GeoStatusPreset | string = 'success';\n /** Override label text. */\n @Input() label?: string;\n /** Show leading status dot (design default). */\n @Input() showDot = true;\n\n get resolvedColor(): GeoStatusColor {\n if (this.status in GEO_STATUS_COLOR_MAP) {\n return GEO_STATUS_COLOR_MAP[this.status as GeoStatusPreset];\n }\n\n const normalized = this.status\n .toLowerCase()\n .replace(/\\s+/g, '_')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n\n if (normalized.includes('san_sang') || normalized.includes('hoan')) return 'success';\n if (normalized.includes('tu_choi') || normalized.includes('huy')) return 'error';\n if (normalized.includes('ban_thao') || normalized.includes('dieu_chinh')) return 'warning';\n if (normalized.includes('da_nop') || normalized.includes('nop')) return 'info';\n if (normalized.includes('tra_ket_qua') || normalized.includes('ket_qua')) return 'teal';\n if (normalized.includes('chua_xu_ly') || normalized.includes('cho')) return 'neutral';\n if (normalized.includes('muon') || normalized.includes('thuc_hien')) return 'primary';\n return 'primary';\n }\n\n get displayLabel(): string {\n if (this.label) return this.label;\n if (this.status in GEO_STATUS_LABELS) {\n return GEO_STATUS_LABELS[this.status as GeoStatusPreset];\n }\n return this.status;\n }\n}\n","<span\n class=\"geo-status-tag\"\n [class]=\"'geo-status-tag geo-status-tag--' + resolvedColor\"\n>\n @if (showDot) {\n <span class=\"geo-status-tag__dot\" aria-hidden=\"true\"></span>\n }\n <span class=\"geo-status-tag__label\">{{ displayLabel }}</span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { GeoStepperOrientation, GeoStepperStep } from './geo-stepper.types';\n\n/**\n * Steps / Stepper GEO — horizontal (mặc định) hoặc vertical.\n *\n * Custom qua `steps`, `activeIndex`, `orientation`, `clickable`.\n * Trong form modal: đặt `<geo-stepper>` vào body (content projection).\n *\n * @example\n * ```html\n * <geo-stepper\n * [steps]=\"[\n * { key: 'a', label: 'Bước 1' },\n * { key: 'b', label: 'Bước 2' }\n * ]\"\n * [activeIndex]=\"0\"\n * orientation=\"horizontal\"\n * (activeIndexChange)=\"onStep($event)\"\n * ></geo-stepper>\n * ```\n */\n@Component({\n selector: 'geo-stepper',\n standalone: true,\n imports: [CommonModule, NzIconModule],\n templateUrl: './geo-stepper.component.html',\n styleUrl: './geo-stepper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-stepper-host',\n '[class.geo-stepper-host--vertical]': 'orientation === \"vertical\"',\n '[class.geo-stepper-host--horizontal]': 'orientation === \"horizontal\"',\n },\n})\nexport class GeoStepperComponent {\n @Input() steps: GeoStepperStep[] = [];\n @Input() activeIndex = 0;\n /** Mặc định horizontal theo design form modal. */\n @Input() orientation: GeoStepperOrientation = 'horizontal';\n /** Cho phép click để đổi bước. */\n @Input() clickable = true;\n\n @Output() activeIndexChange = new EventEmitter<number>();\n @Output() stepSelect = new EventEmitter<{ index: number; step: GeoStepperStep }>();\n\n trackByIndex(index: number): number {\n return index;\n }\n\n isActive(index: number): boolean {\n return index === this.activeIndex;\n }\n\n isCompleted(index: number): boolean {\n return index < this.activeIndex;\n }\n\n isPending(index: number): boolean {\n return index > this.activeIndex;\n }\n\n onSelect(index: number, step: GeoStepperStep): void {\n if (!this.clickable || step.disabled || index === this.activeIndex) {\n return;\n }\n this.activeIndex = index;\n this.activeIndexChange.emit(index);\n this.stepSelect.emit({ index, step });\n }\n}\n","<nav class=\"geo-stepper\" [attr.aria-label]=\"'Các bước'\">\n <ol class=\"geo-stepper__list\">\n @for (step of steps; track trackByIndex($index); let i = $index; let last = $last) {\n <li\n class=\"geo-stepper__item\"\n [class.geo-stepper__item--active]=\"isActive(i)\"\n [class.geo-stepper__item--completed]=\"isCompleted(i)\"\n [class.geo-stepper__item--pending]=\"isPending(i)\"\n [class.geo-stepper__item--disabled]=\"step.disabled\"\n [class.geo-stepper__item--last]=\"last\"\n >\n <button\n type=\"button\"\n class=\"geo-stepper__button\"\n [disabled]=\"!clickable || step.disabled\"\n [attr.aria-current]=\"isActive(i) ? 'step' : null\"\n (click)=\"onSelect(i, step)\"\n >\n <span class=\"geo-stepper__index\" aria-hidden=\"true\">\n @if (isCompleted(i)) {\n <span nz-icon nzType=\"check\" nzTheme=\"outline\"></span>\n } @else {\n {{ i + 1 }}\n }\n </span>\n <span class=\"geo-stepper__label\">{{ step.label }}</span>\n </button>\n\n @if (!last) {\n <span\n class=\"geo-stepper__connector\"\n [class.geo-stepper__connector--done]=\"isCompleted(i)\"\n aria-hidden=\"true\"\n ></span>\n }\n </li>\n }\n </ol>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { GeoButtonComponent } from '../geo-button/geo-button.component';\nimport { GeoStepperComponent } from '../geo-stepper/geo-stepper.component';\nimport { GeoStepperStep } from '../geo-stepper/geo-stepper.types';\n\n/**\n * Layout form page multi-step: cột trái stepper + cột phải form card.\n *\n * ```html\n * <geo-step-form-layout\n * title=\"Thêm mới ...\"\n * [steps]=\"steps\"\n * [activeIndex]=\"activeIndex\"\n * [showScrollButtons]=\"true\"\n * (cancel)=\"onCancel()\"\n * (save)=\"onSave()\"\n * (next)=\"onNext()\"\n * >\n * <form>...</form>\n * </geo-step-form-layout>\n * ```\n */\n@Component({\n selector: 'geo-step-form-layout',\n standalone: true,\n imports: [CommonModule, NzIconModule, GeoButtonComponent, GeoStepperComponent],\n templateUrl: './geo-step-form-layout.component.html',\n styleUrl: './geo-step-form-layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-step-form-layout-host',\n },\n})\nexport class GeoStepFormLayoutComponent {\n @Input() steps: GeoStepperStep[] = [];\n @Input() activeIndex = 0;\n @Input() title = '';\n @Input() clickableSteps = true;\n /** Hiện nút ↑/↓ góc phải card (chuyển bước). Mặc định `true`. */\n @Input() showScrollButtons = true;\n\n @Input() showCancel = true;\n @Input() showPrevious = true;\n @Input() showSave = true;\n @Input() showNext = true;\n @Input() cancelLabel = 'Hủy';\n @Input() previousLabel = 'Trở lại';\n @Input() saveLabel = 'Lưu';\n @Input() nextLabel = 'Tiếp theo';\n @Input() finishLabel = 'Hoàn thành';\n @Input() saveLoading = false;\n @Input() nextLoading = false;\n /** Ẩn footer actions (dùng slot `[footer]` hoặc không cần nút). */\n @Input() hideDefaultFooter = false;\n\n @Output() activeIndexChange = new EventEmitter<number>();\n @Output() stepSelect = new EventEmitter<{ index: number; step: GeoStepperStep }>();\n @Output() cancel = new EventEmitter<void>();\n @Output() previous = new EventEmitter<void>();\n @Output() save = new EventEmitter<void>();\n @Output() next = new EventEmitter<void>();\n\n get isLastStep(): boolean {\n return this.steps.length > 0 && this.activeIndex >= this.steps.length - 1;\n }\n\n get canGoPreviousStep(): boolean {\n return this.findAdjacentStepIndex(-1) != null;\n }\n\n get canGoNextStep(): boolean {\n return this.findAdjacentStepIndex(1) != null;\n }\n\n get resolvedNextLabel(): string {\n return this.isLastStep ? this.finishLabel : this.nextLabel;\n }\n\n onActiveIndexChange(index: number): void {\n this.activeIndex = index;\n this.activeIndexChange.emit(index);\n }\n\n onStepSelect(event: { index: number; step: GeoStepperStep }): void {\n this.stepSelect.emit(event);\n }\n\n onCancel(): void {\n this.cancel.emit();\n }\n\n onPrevious(): void {\n this.previous.emit();\n }\n\n onSave(): void {\n this.save.emit();\n }\n\n onNext(): void {\n this.next.emit();\n }\n\n goAdjacentStep(direction: 'up' | 'down'): void {\n const delta = direction === 'up' ? -1 : 1;\n const nextIndex = this.findAdjacentStepIndex(delta);\n if (nextIndex == null) return;\n\n const step = this.steps[nextIndex];\n this.activeIndex = nextIndex;\n this.activeIndexChange.emit(nextIndex);\n this.stepSelect.emit({ index: nextIndex, step });\n }\n\n private findAdjacentStepIndex(delta: -1 | 1): number | null {\n let index = this.activeIndex + delta;\n while (index >= 0 && index < this.steps.length) {\n if (!this.steps[index]?.disabled) {\n return index;\n }\n index += delta;\n }\n return null;\n }\n}\n","<div class=\"geo-step-form-layout\">\n <aside class=\"geo-step-form-layout__aside\">\n <div class=\"geo-step-form-layout__step-card\">\n <geo-stepper\n [steps]=\"steps\"\n [activeIndex]=\"activeIndex\"\n [clickable]=\"clickableSteps\"\n orientation=\"vertical\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n (stepSelect)=\"onStepSelect($event)\"\n ></geo-stepper>\n\n <ng-content select=\"[sidebarExtra]\"></ng-content>\n </div>\n </aside>\n\n <div\n class=\"geo-step-form-layout__main-wrap\"\n [class.geo-step-form-layout__main-wrap--with-fab]=\"showScrollButtons\"\n >\n @if (showScrollButtons) {\n <div class=\"geo-step-form-layout__scroll-fab\">\n <button\n type=\"button\"\n class=\"geo-step-form-layout__fab\"\n aria-label=\"Bước trước\"\n [disabled]=\"!canGoPreviousStep\"\n (click)=\"goAdjacentStep('up')\"\n >\n <span nz-icon nzType=\"arrow-up\" nzTheme=\"outline\"></span>\n </button>\n <button\n type=\"button\"\n class=\"geo-step-form-layout__fab\"\n aria-label=\"Bước sau\"\n [disabled]=\"!canGoNextStep\"\n (click)=\"goAdjacentStep('down')\"\n >\n <span nz-icon nzType=\"arrow-down\" nzTheme=\"outline\"></span>\n </button>\n </div>\n }\n\n <section class=\"geo-step-form-layout__card\">\n @if (title) {\n <h1 class=\"geo-step-form-layout__title\">{{ title }}</h1>\n }\n\n <div class=\"geo-step-form-layout__body\">\n <ng-content></ng-content>\n </div>\n\n @if (!hideDefaultFooter) {\n <footer class=\"geo-step-form-layout__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n\n <div class=\"geo-step-form-layout__footer-default\">\n <div class=\"geo-step-form-layout__footer-start\">\n @if (showCancel) {\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelLabel }}\n </geo-button>\n }\n </div>\n\n <div class=\"geo-step-form-layout__footer-end\">\n @if (showPrevious && activeIndex > 0) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"left\"\n (clicked)=\"onPrevious()\"\n >\n {{ previousLabel }}\n </geo-button>\n }\n @if (showSave) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"save\"\n [disabled]=\"saveLoading\"\n (clicked)=\"onSave()\"\n >\n {{ saveLabel }}\n </geo-button>\n }\n @if (showNext) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [icon]=\"isLastStep ? 'check' : 'right'\"\n [disabled]=\"nextLoading\"\n (clicked)=\"onNext()\"\n >\n {{ resolvedNextLabel }}\n </geo-button>\n }\n </div>\n </div>\n </footer>\n } @else {\n <ng-content select=\"[footer]\"></ng-content>\n }\n </section>\n </div>\n</div>\n","import {\n Component,\n ContentChildren,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { GeoTabItem, GeoTabsSize, GeoTabsType } from './geo-tabs.types';\n\n@Directive({\n selector: '[uiTab]',\n standalone: true,\n})\nexport class GeoTabDirective {\n @Input('uiTab') key!: string;\n\n constructor(public template: TemplateRef<unknown>) {}\n}\n\n@Component({\n selector: 'geo-tabs',\n standalone: true,\n imports: [CommonModule, NgZorroAntdModule],\n templateUrl: './geo-tabs.component.html',\n styleUrl: './geo-tabs.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-tabs-host',\n '[class.geo-tabs-host--card]': 'type === \"card\"',\n '[class.geo-tabs-host--line]': 'type === \"line\"',\n },\n})\nexport class GeoTabsComponent {\n @Input() items: GeoTabItem[] = [];\n @Input() type: GeoTabsType = 'line';\n @Input() size: GeoTabsSize = 'default';\n @Input() selectedIndex = 0;\n @Input() selectedKey?: string;\n @Input() centered = false;\n @Input() animated = true;\n\n @Output() selectedIndexChange = new EventEmitter<number>();\n @Output() selectedKeyChange = new EventEmitter<string>();\n @Output() tabChange = new EventEmitter<{ index: number; key: string }>();\n\n @ContentChildren(GeoTabDirective) tabTemplates!: QueryList<GeoTabDirective>;\n\n get resolvedSelectedIndex(): number {\n if (this.selectedKey) {\n const index = this.items.findIndex((item) => item.key === this.selectedKey);\n if (index >= 0) {\n return index;\n }\n }\n\n return this.selectedIndex;\n }\n\n getTemplate(key: string): TemplateRef<unknown> | null {\n return this.tabTemplates?.find((tab) => tab.key === key)?.template ?? null;\n }\n\n onSelectedIndexChange(index: number): void {\n this.selectedIndex = index;\n const key = this.items[index]?.key ?? '';\n this.selectedKey = key || undefined;\n this.selectedIndexChange.emit(index);\n if (key) {\n this.selectedKeyChange.emit(key);\n this.tabChange.emit({ index, key });\n }\n }\n}\n","<nz-tabset\n class=\"geo-tabs\"\n [class.geo-tabs--card]=\"type === 'card'\"\n [class.geo-tabs--line]=\"type === 'line'\"\n [nzType]=\"type\"\n [nzSize]=\"size\"\n [nzSelectedIndex]=\"resolvedSelectedIndex\"\n [nzCentered]=\"centered\"\n [nzAnimated]=\"animated\"\n (nzSelectedIndexChange)=\"onSelectedIndexChange($event)\"\n>\n @for (item of items; track item.key) {\n <nz-tab [nzTitle]=\"item.title\" [nzDisabled]=\"item.disabled ?? false\">\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n }\n </nz-tab>\n }\n</nz-tabset>\n","export interface GeoRowAction {\n key: string;\n icon: string;\n label?: string;\n title?: string;\n iconTheme?: 'outline' | 'fill' | 'twotone';\n disabled?: boolean;\n danger?: boolean;\n}\n\nexport const DEFAULT_UI_ROW_ACTIONS: GeoRowAction[] = [\n { key: 'edit', icon: 'edit', title: 'Chỉnh sửa' },\n { key: 'more', icon: 'more', title: 'Thêm thao tác' },\n];\n\n/** ≤2: hiện hết; >2: primary + danger (vd. Sửa + Xóa), còn lại vào menu. */\nexport function pickInlineRowActions(\n actions: GeoRowAction[],\n primaryActionKey = 'edit'\n): GeoRowAction[] {\n const list = actions.filter((action) => !action.disabled);\n if (list.length <= 2) {\n return list;\n }\n\n const primary =\n list.find((action) => action.key === primaryActionKey) ?? list[0];\n const secondary =\n list.find((action) => action.key !== primary.key && action.danger) ??\n list.find((action) => action.key !== primary.key);\n\n return secondary ? [primary, secondary] : [primary];\n}\n\nexport function pickOverflowRowActions(\n actions: GeoRowAction[],\n primaryActionKey = 'edit'\n): GeoRowAction[] {\n const list = actions.filter((action) => !action.disabled);\n if (list.length <= 2) {\n return [];\n }\n\n const inlineKeys = new Set(\n pickInlineRowActions(list, primaryActionKey).map((action) => action.key)\n );\n return list.filter((action) => !inlineKeys.has(action.key));\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';\nimport {\n DEFAULT_UI_ROW_ACTIONS,\n pickInlineRowActions,\n pickOverflowRowActions,\n GeoRowAction,\n} from './geo-row-actions.types';\n\n@Component({\n selector: 'geo-row-actions',\n standalone: true,\n imports: [CommonModule, NgZorroAntdModule],\n templateUrl: './geo-row-actions.component.html',\n styleUrl: './geo-row-actions.component.scss',\n})\nexport class GeoRowActionsComponent {\n @Input() actions: GeoRowAction[] | null = null;\n /** Action ưu tiên hiển thị khi có > 2 thao tác (mặc định: edit) */\n @Input() primaryActionKey = 'edit';\n\n @Output() actionClick = new EventEmitter<string>();\n /** @deprecated Dùng `actionClick` với key `edit` */\n @Output() edit = new EventEmitter<void>();\n /** @deprecated Dùng `actionClick` với key `more` */\n @Output() more = new EventEmitter<void>();\n\n get resolvedActions(): GeoRowAction[] {\n return this.actions?.length ? this.actions : DEFAULT_UI_ROW_ACTIONS;\n }\n\n get enabledActions(): GeoRowAction[] {\n return this.resolvedActions.filter((action) => !action.disabled);\n }\n\n get inlineActions(): GeoRowAction[] {\n return pickInlineRowActions(this.enabledActions, this.primaryActionKey);\n }\n\n get overflowActions(): GeoRowAction[] {\n return pickOverflowRowActions(this.enabledActions, this.primaryActionKey);\n }\n\n get hasOverflow(): boolean {\n return this.overflowActions.length > 0;\n }\n\n onActionClick(event: Event, action: GeoRowAction): void {\n if (action.disabled) {\n return;\n }\n\n event.stopPropagation();\n this.actionClick.emit(action.key);\n\n if (action.key === 'edit') {\n this.edit.emit();\n }\n\n if (action.key === 'more') {\n this.more.emit();\n }\n }\n}\n","<div class=\"geo-row-actions\">\n @for (action of inlineActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Thêm thao tác\"\n aria-label=\"Thêm thao tác\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n","import type { GeoRowAction } from './geo-row-actions/geo-row-actions.types';\n\nexport interface GeoTableFilter {\n text: string;\n value: string;\n}\n\nexport type GeoTableCellRender = 'text' | 'index' | 'status' | 'actions';\n\n/** Quy tắc căn lề dữ liệu: text → trái, number → phải, date → giữa */\nexport type GeoTableColumnDataType = 'text' | 'number' | 'date';\n\nexport interface GeoTableColumn {\n key: string;\n title: string;\n width?: string;\n /** Căn lề ô dữ liệu — nếu không set sẽ suy ra từ `dataType` / `renderAs` */\n align?: 'left' | 'center' | 'right';\n /** Kiểu dữ liệu để áp dụng quy tắc căn lề mặc định */\n dataType?: GeoTableColumnDataType;\n sortable?: boolean;\n sortOrder?: 'ascend' | 'descend' | null;\n sortFn?: (a: Record<string, unknown>, b: Record<string, unknown>) => number;\n filters?: GeoTableFilter[];\n filterMultiple?: boolean;\n fixed?: 'left' | 'right';\n ellipsis?: boolean;\n wrap?: boolean;\n renderAs?: GeoTableCellRender;\n statusLabelKey?: string;\n actions?: GeoRowAction[];\n /**\n * Resolve actions theo từng dòng (vd. ẩn/hiện theo trạng thái).\n * Nếu có thì ưu tiên hơn `actions`.\n */\n resolveActions?: (row: Record<string, unknown>) => GeoRowAction[];\n /** Action key ưu tiên hiển thị khi có > 2 thao tác (mặc định: edit) */\n primaryActionKey?: string;\n visible?: boolean;\n /**\n * Mobile card: dùng cột này làm tiêu đề card.\n * Nếu không cột nào set, lấy cột dữ liệu đầu tiên (không phải index/actions).\n */\n mobileTitle?: boolean;\n /** Mobile card: ẩn cột khỏi body card. */\n mobileHidden?: boolean;\n}\n\n/** Breakpoint chuyển bảng → danh sách card (khớp layout mobile). */\nexport const UI_TABLE_MOBILE_BREAKPOINT = 767.98;\n\nexport type GeoTablePaginationPosition = 'top' | 'bottom' | 'both';\n\nexport const DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS = [10, 20, 50, 100];\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';\nimport { GeoSelectOption } from '../../geo-select/geo-select.types';\nimport { GeoSelectComponent } from '../../geo-select/geo-select.component';\nimport { DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS } from '../geo-table.types';\n\nexport type GeoTablePaginationPageItem = number | 'ellipsis';\n\n@Component({\n selector: 'geo-table-pagination',\n standalone: true,\n imports: [CommonModule, FormsModule, NgZorroAntdModule, GeoSelectComponent],\n templateUrl: './geo-table-pagination.component.html',\n styleUrl: './geo-table-pagination.component.scss',\n})\nexport class GeoTablePaginationComponent {\n @Input() pageIndex = 1;\n @Input() pageSize = 10;\n @Input() total = 0;\n @Input() pageSizeOptions: number[] = DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS;\n @Input() showSizeChanger = true;\n @Input() hideOnSinglePage = false;\n @Input() showTotalRange = true;\n @Input() sizeLabel = 'Hiển thị';\n\n @Output() pageIndexChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n\n get rangeStart(): number {\n if (this.total === 0) {\n return 0;\n }\n\n return (this.pageIndex - 1) * this.pageSize + 1;\n }\n\n get rangeEnd(): number {\n if (this.total === 0) {\n return 0;\n }\n\n return Math.min(this.pageIndex * this.pageSize, this.total);\n }\n\n get totalPages(): number {\n return Math.max(1, Math.ceil(this.total / this.pageSize));\n }\n\n get sizeOptions(): GeoSelectOption<number>[] {\n return this.pageSizeOptions.map((size) => ({\n label: size.toString(),\n value: size,\n }));\n }\n\n get visible(): boolean {\n if (this.hideOnSinglePage && this.total <= this.pageSize) {\n return false;\n }\n\n return this.total > 0;\n }\n\n get pages(): GeoTablePaginationPageItem[] {\n return this.buildPageList(this.pageIndex, this.totalPages);\n }\n\n get isFirstPage(): boolean {\n return this.pageIndex <= 1;\n }\n\n get isLastPage(): boolean {\n return this.pageIndex >= this.totalPages;\n }\n\n onPageSizeChange(value: string | number | Array<string | number> | null): void {\n if (typeof value === 'number') {\n this.pageSizeChange.emit(value);\n }\n }\n\n goToFirst(): void {\n this.goToPage(1);\n }\n\n goToPrev(): void {\n this.goToPage(this.pageIndex - 1);\n }\n\n goToNext(): void {\n this.goToPage(this.pageIndex + 1);\n }\n\n goToLast(): void {\n this.goToPage(this.totalPages);\n }\n\n goToPage(page: number): void {\n const next = Math.min(Math.max(page, 1), this.totalPages);\n if (next !== this.pageIndex) {\n this.pageIndexChange.emit(next);\n }\n }\n\n private buildPageList(current: number, total: number): GeoTablePaginationPageItem[] {\n if (total <= 5) {\n return Array.from({ length: total }, (_, index) => index + 1);\n }\n\n if (current <= 3) {\n return [1, 2, 3, 'ellipsis', total];\n }\n\n if (current >= total - 2) {\n return [1, 'ellipsis', total - 2, total - 1, total];\n }\n\n return [1, 'ellipsis', current - 1, current, current + 1, 'ellipsis', total];\n }\n}\n","@if (visible) {\n <div class=\"geo-table-pagination\">\n <div class=\"geo-table-pagination__left\">\n @if (showTotalRange) {\n <p class=\"geo-table-pagination__total\">\n <strong>{{ rangeStart }}-{{ rangeEnd }}</strong> trên tổng <strong>{{ total }}</strong>\n </p>\n }\n\n @if (showSizeChanger) {\n <div class=\"geo-table-pagination__size\">\n <span class=\"geo-table-pagination__size-label\">{{ sizeLabel }}</span>\n <geo-select\n class=\"geo-table-pagination__size-select\"\n size=\"small\"\n [options]=\"sizeOptions\"\n [allowClear]=\"false\"\n [ngModel]=\"pageSize\"\n (valueChange)=\"onPageSizeChange($event)\"\n ></geo-select>\n </div>\n }\n </div>\n\n <div class=\"geo-table-pagination__nav\" role=\"navigation\" aria-label=\"Phân trang\">\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang đầu\"\n [disabled]=\"isFirstPage\"\n (click)=\"goToFirst()\"\n >\n <span aria-hidden=\"true\">«</span>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang trước\"\n [disabled]=\"isFirstPage\"\n (click)=\"goToPrev()\"\n >\n <span aria-hidden=\"true\">‹</span>\n </button>\n\n @for (page of pages; track $index) {\n @if (page === 'ellipsis') {\n <span class=\"geo-table-pagination__ellipsis\" aria-hidden=\"true\">...</span>\n } @else {\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn geo-table-pagination__btn--page\"\n [class.geo-table-pagination__btn--active]=\"page === pageIndex\"\n [attr.aria-current]=\"page === pageIndex ? 'page' : null\"\n [attr.aria-label]=\"'Trang ' + page\"\n (click)=\"goToPage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang kế\"\n [disabled]=\"isLastPage\"\n (click)=\"goToNext()\"\n >\n <span aria-hidden=\"true\">›</span>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang cuối\"\n [disabled]=\"isLastPage\"\n (click)=\"goToLast()\"\n >\n <span aria-hidden=\"true\">»</span>\n </button>\n </div>\n </div>\n}\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../ng-zorro/ng-zorro-antd.module';\nimport { NzTableQueryParams, NzTableSize } from 'ng-zorro-antd/table';\nimport { GeoRowActionsComponent } from './geo-row-actions/geo-row-actions.component';\nimport {\n pickInlineRowActions,\n pickOverflowRowActions,\n type GeoRowAction,\n} from './geo-row-actions/geo-row-actions.types';\nimport { GeoStatusTagComponent } from '../geo-status-tag/geo-status-tag.component';\nimport { GeoCheckboxComponent } from '../geo-checkbox/geo-checkbox.component';\nimport { GeoTablePaginationComponent } from './geo-table-pagination/geo-table-pagination.component';\nimport {\n DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS,\n GeoTableColumn,\n GeoTablePaginationPosition,\n} from './geo-table.types';\n\n@Component({\n selector: 'geo-table',\n standalone: true,\n imports: [\n CommonModule,\n NgZorroAntdModule,\n GeoStatusTagComponent,\n GeoRowActionsComponent,\n GeoCheckboxComponent,\n GeoTablePaginationComponent,\n ],\n templateUrl: './geo-table.component.html',\n styleUrl: './geo-table.component.scss',\n})\nexport class GeoTableComponent implements OnChanges {\n @Input() columns: GeoTableColumn[] = [];\n @Input() data: Record<string, unknown>[] = [];\n @Input() loading = false;\n @Input() bordered = true;\n @Input() outerBordered = false;\n @Input() size: NzTableSize = 'middle';\n @Input() striped = true;\n @Input() clickable = true;\n @Input() tableLayout: 'auto' | 'fixed' = 'auto';\n\n @Input() showPagination = true;\n @Input() frontPagination = true;\n @Input() pageIndex = 1;\n @Input() pageSize = 10;\n @Input() total?: number;\n @Input() pageSizeOptions: number[] = DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS;\n @Input() showSizeChanger = false;\n @Input() showQuickJumper = false;\n @Input() hideOnSinglePage = false;\n @Input() simplePagination = false;\n @Input() paginationPosition: GeoTablePaginationPosition = 'bottom';\n\n @Input() scroll: { x?: string; y?: string } = {};\n @Input() scrollY?: string;\n /**\n * Tự bật scroll ngang theo tổng width cột.\n * Khi có cột `fixed`, scroll.x luôn được tính (bắt buộc với nz-table fixed).\n */\n @Input() autoScroll = false;\n\n @Input() tableTitle?: string;\n @Input() footer?: string;\n @Input() emptyText = 'Không có dữ liệu';\n\n @Input() showTotalRange = false;\n\n @Input() selectable = false;\n @Input() rowKey = 'id';\n @Input() selectedKeys: string[] = [];\n\n /**\n * Mobile card: key cột làm tiêu đề.\n * Ưu tiên hơn `column.mobileTitle`; nếu không set thì lấy cột dữ liệu đầu tiên.\n */\n @Input() mobileTitleKey?: string;\n /** Bật/tắt chuyển card trên mobile (mặc định bật). */\n @Input() mobileCardView = true;\n\n @Output() rowClick = new EventEmitter<Record<string, unknown>>();\n @Output() rowEdit = new EventEmitter<Record<string, unknown>>();\n @Output() rowMore = new EventEmitter<Record<string, unknown>>();\n @Output() rowAction = new EventEmitter<{ row: Record<string, unknown>; action: string }>();\n @Output() pageIndexChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n @Output() queryParams = new EventEmitter<NzTableQueryParams>();\n @Output() currentPageDataChange = new EventEmitter<readonly Record<string, unknown>[]>();\n @Output() selectedKeysChange = new EventEmitter<string[]>();\n @Output() selectionChange = new EventEmitter<Record<string, unknown>[]>();\n\n allChecked = false;\n indeterminate = false;\n\n private sortFnCache = new Map<string, (a: Record<string, unknown>, b: Record<string, unknown>) => number>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['columns']) {\n this.sortFnCache.clear();\n }\n }\n\n get visibleColumns(): GeoTableColumn[] {\n return this.columns.filter((col) => col.visible !== false);\n }\n\n get computedTotal(): number {\n return this.total ?? this.data.length;\n }\n\n get paginatedData(): Record<string, unknown>[] {\n if (!this.showPagination || !this.frontPagination) {\n return this.data;\n }\n\n const start = (this.pageIndex - 1) * this.pageSize;\n return this.data.slice(start, start + this.pageSize);\n }\n\n get shouldShowPagination(): boolean {\n return this.showPagination;\n }\n\n get hasFixedColumns(): boolean {\n return this.visibleColumns.some((col) => col.fixed === 'left' || col.fixed === 'right');\n }\n\n /** Có cột fixed → table-layout fixed để header/body cùng width cột. */\n get computedTableLayout(): 'auto' | 'fixed' {\n return this.hasFixedColumns ? 'fixed' : this.tableLayout;\n }\n\n /** Đồng bộ width cột khi scrollY tách header/body thành 2 bảng. */\n get widthConfig(): Array<string | null> {\n const widths = this.visibleColumns.map((col) => col.width ?? null);\n return this.selectable ? ['48px', ...widths] : widths;\n }\n\n get computedScroll(): { x?: string; y?: string } {\n const scroll = { ...this.scroll };\n\n if (this.scrollY) {\n scroll.y = this.scrollY;\n }\n\n // nz-table cần scroll.x để fixed left/right hoạt động.\n if (!scroll.x && (this.autoScroll || this.hasFixedColumns)) {\n const minWidth = this.computeMinTableWidth();\n if (minWidth > 0) {\n scroll.x = `${minWidth}px`;\n }\n }\n\n return scroll;\n }\n\n get mobileTitleColumn(): GeoTableColumn | null {\n if (this.mobileTitleKey) {\n return this.visibleColumns.find((col) => col.key === this.mobileTitleKey) ?? null;\n }\n\n const marked = this.visibleColumns.find((col) => col.mobileTitle);\n if (marked) return marked;\n\n return (\n this.visibleColumns.find(\n (col) =>\n col.renderAs !== 'index' &&\n col.renderAs !== 'actions' &&\n !col.mobileHidden\n ) ?? null\n );\n }\n\n get mobileBodyColumns(): GeoTableColumn[] {\n const titleKey = this.mobileTitleColumn?.key;\n return this.visibleColumns.filter(\n (col) =>\n col.renderAs !== 'actions' &&\n col.renderAs !== 'index' &&\n !col.mobileHidden &&\n col.key !== titleKey\n );\n }\n\n get mobileActionsColumn(): GeoTableColumn | null {\n return this.visibleColumns.find((col) => col.renderAs === 'actions') ?? null;\n }\n\n getRowActions(col: GeoTableColumn, row: Record<string, unknown>): GeoRowAction[] {\n if (col.resolveActions) {\n return col.resolveActions(row) ?? [];\n }\n return col.actions ?? [];\n }\n\n getMobileHeaderActions(\n col: GeoTableColumn,\n row: Record<string, unknown>\n ): GeoRowAction[] {\n return pickInlineRowActions(\n this.getRowActions(col, row),\n col.primaryActionKey ?? 'edit'\n );\n }\n\n getMobileFooterActions(\n col: GeoTableColumn,\n row: Record<string, unknown>\n ): GeoRowAction[] {\n return pickOverflowRowActions(\n this.getRowActions(col, row),\n col.primaryActionKey ?? 'edit'\n );\n }\n\n hasFilters(col: GeoTableColumn): boolean {\n return (col.filters?.length ?? 0) > 0;\n }\n\n getSortFn(col: GeoTableColumn): (a: Record<string, unknown>, b: Record<string, unknown>) => number {\n if (col.sortFn) {\n return col.sortFn;\n }\n\n const cached = this.sortFnCache.get(col.key);\n if (cached) {\n return cached;\n }\n\n const fn = (a: Record<string, unknown>, b: Record<string, unknown>) => {\n const av = a[col.key];\n const bv = b[col.key];\n if (av == null || bv == null) return 0;\n return String(av).localeCompare(String(bv), 'vi');\n };\n\n this.sortFnCache.set(col.key, fn);\n return fn;\n }\n\n getCellValue(row: Record<string, unknown>, key: string): string {\n const value = row[key];\n return value == null ? '' : String(value);\n }\n\n /** Tiêu đề cột luôn căn giữa theo quy tắc accessibility */\n getHeaderAlign(_col: GeoTableColumn): 'left' | 'center' | 'right' {\n return 'center';\n }\n\n /**\n * Căn lề ô dữ liệu:\n * - text → trái, number → phải, date → giữa\n * - index / status / actions → giữa\n */\n getCellAlign(col: GeoTableColumn): 'left' | 'center' | 'right' {\n if (col.align) {\n return col.align;\n }\n\n if (col.renderAs === 'index' || col.renderAs === 'status' || col.renderAs === 'actions') {\n return 'center';\n }\n\n if (col.dataType === 'number') {\n return 'right';\n }\n\n if (col.dataType === 'date') {\n return 'center';\n }\n\n return 'left';\n }\n\n getRowIndex(rowIndex: number): number {\n return (this.pageIndex - 1) * this.pageSize + rowIndex + 1;\n }\n\n trackRow(index: number, row: Record<string, unknown>): string {\n const key = row[this.rowKey];\n return key != null ? String(key) : String(index);\n }\n\n isRowSelected(row: Record<string, unknown>): boolean {\n const key = String(row[this.rowKey] ?? '');\n return this.selectedKeys.includes(key);\n }\n\n onAllChecked(checked: boolean): void {\n const rows = this.selectionRows;\n const keys = rows.map((row) => String(row[this.rowKey] ?? ''));\n\n if (checked) {\n this.selectedKeys = [...new Set([...this.selectedKeys, ...keys])];\n } else {\n this.selectedKeys = this.selectedKeys.filter((key) => !keys.includes(key));\n }\n\n this.refreshSelectionState();\n this.emitSelection();\n }\n\n onItemChecked(row: Record<string, unknown>, checked: boolean): void {\n const key = String(row[this.rowKey] ?? '');\n this.selectedKeys = checked\n ? [...this.selectedKeys, key]\n : this.selectedKeys.filter((k) => k !== key);\n this.refreshSelectionState();\n this.emitSelection();\n }\n\n onPageIndexChange(index: number): void {\n this.pageIndex = index;\n this.refreshSelectionState();\n this.pageIndexChange.emit(index);\n }\n\n onPageSizeChange(size: number): void {\n this.pageSize = size;\n this.pageIndex = 1;\n this.refreshSelectionState();\n this.pageSizeChange.emit(size);\n }\n\n onRowActionClick(row: Record<string, unknown>, actionKey: string): void {\n this.rowAction.emit({ row, action: actionKey });\n\n if (actionKey === 'edit') {\n this.rowEdit.emit(row);\n }\n\n if (actionKey === 'more') {\n this.rowMore.emit(row);\n }\n }\n\n onMobileCardClick(row: Record<string, unknown>, event: Event): void {\n if (!this.clickable) return;\n const target = event.target as HTMLElement | null;\n if (target?.closest('button, a, .geo-row-actions, .geo-checkbox, .geo-table-card__footer')) {\n return;\n }\n this.rowClick.emit(row);\n }\n\n private computeMinTableWidth(): number {\n let total = this.selectable ? 48 : 0;\n\n for (const col of this.visibleColumns) {\n const width = col.width;\n if (width?.endsWith('px')) {\n total += Number.parseInt(width, 10);\n } else {\n total += 160;\n }\n }\n\n return total;\n }\n\n private refreshSelectionState(): void {\n const rows = this.selectionRows;\n const selectedOnPage = rows.filter((row) =>\n this.selectedKeys.includes(String(row[this.rowKey] ?? ''))\n ).length;\n\n this.allChecked = selectedOnPage > 0 && selectedOnPage === rows.length;\n this.indeterminate = selectedOnPage > 0 && selectedOnPage < rows.length;\n this.selectedKeysChange.emit([...this.selectedKeys]);\n }\n\n private get selectionRows(): Record<string, unknown>[] {\n return this.showPagination && this.frontPagination ? this.paginatedData : this.data;\n }\n\n private emitSelection(): void {\n const selected = this.data.filter((row) =>\n this.selectedKeys.includes(String(row[this.rowKey] ?? ''))\n );\n this.selectionChange.emit(selected);\n }\n}\n","<div\n class=\"geo-table\"\n [class.geo-table--striped]=\"striped\"\n [class.geo-table--mobile-cards]=\"mobileCardView\"\n>\n @if (shouldShowPagination && (paginationPosition === 'top' || paginationPosition === 'both')) {\n <geo-table-pagination\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [total]=\"computedTotal\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showSizeChanger]=\"showSizeChanger\"\n [hideOnSinglePage]=\"hideOnSinglePage\"\n [showTotalRange]=\"showTotalRange\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></geo-table-pagination>\n }\n\n <div class=\"geo-table__desktop\">\n <nz-table\n #uiTable\n [nzData]=\"paginatedData\"\n [nzLoading]=\"loading\"\n [nzBordered]=\"bordered\"\n [nzOuterBordered]=\"outerBordered\"\n [nzSize]=\"size\"\n [nzTitle]=\"tableTitle ?? null\"\n [nzFooter]=\"footer ?? null\"\n [nzShowPagination]=\"false\"\n [nzFrontPagination]=\"false\"\n [nzScroll]=\"computedScroll\"\n [nzNoResult]=\"emptyText\"\n [nzTableLayout]=\"computedTableLayout\"\n [nzWidthConfig]=\"widthConfig\"\n (nzQueryParams)=\"queryParams.emit($event)\"\n (nzCurrentPageDataChange)=\"currentPageDataChange.emit($event)\"\n >\n <thead>\n <tr>\n @if (selectable) {\n <th\n class=\"geo-table__checkbox-cell\"\n nzWidth=\"48px\"\n [nzLeft]=\"hasFixedColumns\"\n >\n <geo-checkbox\n [checked]=\"allChecked\"\n [indeterminate]=\"indeterminate\"\n (checkedChange)=\"onAllChecked($event)\"\n ></geo-checkbox>\n </th>\n }\n @for (col of visibleColumns; track col.key) {\n <th\n [nzWidth]=\"col.width ?? null\"\n [nzAlign]=\"getHeaderAlign(col)\"\n [nzColumnKey]=\"col.key\"\n [nzShowSort]=\"col.sortable ?? false\"\n [nzSortOrder]=\"col.sortOrder ?? null\"\n [nzSortFn]=\"col.sortable ? getSortFn(col) : null\"\n [nzShowFilter]=\"hasFilters(col)\"\n [nzFilters]=\"col.filters ?? []\"\n [nzFilterMultiple]=\"col.filterMultiple ?? true\"\n [nzLeft]=\"col.fixed === 'left'\"\n [nzRight]=\"col.fixed === 'right'\"\n >{{ col.title }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of uiTable.data; track trackRow($index, row); let rowIndex = $index) {\n <tr\n class=\"geo-table__row\"\n [class.geo-table__row--selected]=\"isRowSelected(row)\"\n [class.geo-table__row--clickable]=\"clickable\"\n (click)=\"clickable && rowClick.emit(row)\"\n >\n @if (selectable) {\n <td\n class=\"geo-table__checkbox-cell\"\n [nzLeft]=\"hasFixedColumns\"\n (click)=\"$event.stopPropagation()\"\n >\n <geo-checkbox\n [checked]=\"isRowSelected(row)\"\n (checkedChange)=\"onItemChecked(row, $event)\"\n ></geo-checkbox>\n </td>\n }\n @for (col of visibleColumns; track col.key) {\n <td\n [nzAlign]=\"getCellAlign(col)\"\n [nzEllipsis]=\"col.wrap ? false : (col.ellipsis ?? false)\"\n [class.geo-table__cell--wrap]=\"col.wrap\"\n [nzLeft]=\"col.fixed === 'left'\"\n [nzRight]=\"col.fixed === 'right'\"\n [style.width]=\"col.width || null\"\n [style.minWidth]=\"col.width || null\"\n [style.maxWidth]=\"col.fixed ? (col.width || null) : null\"\n >\n @if (col.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else if (col.renderAs === 'status') {\n <geo-status-tag\n [status]=\"getCellValue(row, col.key)\"\n [label]=\"col.statusLabelKey ? getCellValue(row, col.statusLabelKey) || undefined : undefined\"\n ></geo-status-tag>\n } @else if (col.renderAs === 'actions') {\n <geo-row-actions\n [actions]=\"getRowActions(col, row)\"\n [primaryActionKey]=\"col.primaryActionKey ?? 'edit'\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n ></geo-row-actions>\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </nz-table>\n </div>\n\n @if (mobileCardView) {\n <div\n class=\"geo-table__mobile\"\n [class.geo-table__mobile--loading]=\"loading\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n >\n @if (selectable && paginatedData.length) {\n <div class=\"geo-table-card__select-all\">\n <geo-checkbox\n [checked]=\"allChecked\"\n [indeterminate]=\"indeterminate\"\n (checkedChange)=\"onAllChecked($event)\"\n ></geo-checkbox>\n <span>Chọn tất cả trên trang</span>\n </div>\n }\n\n @if (!paginatedData.length && !loading) {\n <div class=\"geo-table__mobile-empty\">{{ emptyText }}</div>\n }\n\n @for (row of paginatedData; track trackRow($index, row); let rowIndex = $index) {\n <article\n class=\"geo-table-card\"\n [class.geo-table-card--selected]=\"isRowSelected(row)\"\n [class.geo-table-card--clickable]=\"clickable\"\n (click)=\"onMobileCardClick(row, $event)\"\n >\n <header class=\"geo-table-card__header\">\n <div class=\"geo-table-card__title-wrap\">\n @if (selectable) {\n <geo-checkbox\n class=\"geo-table-card__checkbox\"\n [checked]=\"isRowSelected(row)\"\n (checkedChange)=\"onItemChecked(row, $event)\"\n (click)=\"$event.stopPropagation()\"\n ></geo-checkbox>\n }\n @if (mobileTitleColumn; as titleCol) {\n <h3 class=\"geo-table-card__title\">\n <span class=\"geo-table-card__title-label\">{{ titleCol.title }}</span>\n <span class=\"geo-table-card__title-sep\">:</span>\n <span class=\"geo-table-card__title-value\">\n @if (titleCol.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else {\n {{ getCellValue(row, titleCol.key) }}\n }\n </span>\n </h3>\n }\n </div>\n\n @if (mobileActionsColumn; as actionsCol) {\n <div class=\"geo-table-card__actions\" (click)=\"$event.stopPropagation()\">\n <geo-row-actions\n [actions]=\"getMobileHeaderActions(actionsCol, row)\"\n [primaryActionKey]=\"actionsCol.primaryActionKey ?? 'edit'\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n ></geo-row-actions>\n </div>\n }\n </header>\n\n @if (mobileBodyColumns.length) {\n <div class=\"geo-table-card__body\">\n @for (col of mobileBodyColumns; track col.key) {\n <div class=\"geo-table-card__row\">\n <span class=\"geo-table-card__label\">{{ col.title }}</span>\n <span class=\"geo-table-card__sep\">:</span>\n <span class=\"geo-table-card__value\">\n @if (col.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else if (col.renderAs === 'status') {\n <geo-status-tag\n [status]=\"getCellValue(row, col.key)\"\n [label]=\"col.statusLabelKey ? getCellValue(row, col.statusLabelKey) || undefined : undefined\"\n ></geo-status-tag>\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n </span>\n </div>\n }\n </div>\n }\n\n @if (mobileActionsColumn; as actionsCol) {\n @if (getMobileFooterActions(actionsCol, row); as footerActions) {\n @if (footerActions.length) {\n <footer class=\"geo-table-card__footer\" (click)=\"$event.stopPropagation()\">\n @for (action of footerActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-table-card__footer-btn\"\n [class.geo-table-card__footer-btn--danger]=\"action.danger\"\n [disabled]=\"action.disabled\"\n (click)=\"onRowActionClick(row, action.key)\"\n >\n {{ action.label ?? action.title ?? action.key }}\n </button>\n }\n </footer>\n }\n }\n }\n </article>\n }\n </div>\n }\n\n @if (shouldShowPagination && (paginationPosition === 'bottom' || paginationPosition === 'both')) {\n <geo-table-pagination\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [total]=\"computedTotal\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showSizeChanger]=\"showSizeChanger\"\n [hideOnSinglePage]=\"hideOnSinglePage\"\n [showTotalRange]=\"showTotalRange\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></geo-table-pagination>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GeoButtonComponent } from '../../geo-button/geo-button.component';\n\n/** Breakpoint (px) → số cột tối đa khi `responsiveColumns` bật. */\nconst COL_BREAKPOINTS: readonly { minWidth: number; cols: number }[] = [\n { minWidth: 1400, cols: 4 },\n { minWidth: 1200, cols: 4 },\n { minWidth: 1024, cols: 3 },\n { minWidth: 768, cols: 2 },\n { minWidth: 0, cols: 1 },\n];\n\n/**\n * Thanh lọc phía trên bảng: field chính + actions (Tìm kiếm / Bộ lọc nâng cao / Reset).\n *\n * ## Số cột hiển thị\n * - `[columns]=\"4\"` — 4 cột field + 1 cột actions = grid 5 cột đều.\n * - `[responsiveColumns]=\"false\"` — giữ đúng `columns`, không giảm theo breakpoint.\n *\n * ## Layout\n * - Grid đều `columns + 1`: field cột 1..N, actions cột cuối.\n * - Advanced span full width (`1 / -1`) với cùng `columns + 1` cột → phủ cả cột button.\n * - Stacked (màn hẹp): actions → fields → advanced.\n *\n * ## Content projection\n * - Default: luôn hiện. Slot `[advanced]`: chỉ hiện khi `advancedExpanded`.\n */\n@Component({\n selector: 'geo-table-filter',\n standalone: true,\n imports: [CommonModule, GeoButtonComponent],\n templateUrl: './geo-table-filter.component.html',\n styleUrl: './geo-table-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GeoTableFilterComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly ngZone = inject(NgZone);\n private readonly cdr = inject(ChangeDetectorRef);\n\n /**\n * Số cột field mỗi hàng (mặc định 4 → tổng 5 cột gồm actions).\n * Ví dụ: 4 field + columns=2 → 2 hàng × 2 cột field (+ 1 cột actions).\n */\n @Input() columns = 4;\n /**\n * Khi `true` (mặc định): số cột thực tế ≤ `columns` theo breakpoint.\n * Khi `false`: luôn dùng đúng `columns`.\n */\n @Input() responsiveColumns = true;\n /** Đưa actions lên hàng đầu khi màn hẹp (stacked). */\n @Input() responsiveCollapse = true;\n /** Breakpoint chuyển layout stacked (px). */\n @Input() mobileBreakpoint = 1024;\n /** Khoảng cách grid (px). */\n @Input() gap = 15;\n\n @Input() searchLabel = 'Tìm kiếm';\n @Input() searchLoading = false;\n /** Hiện nút mở/đóng slot `[advanced]`. */\n @Input() showAdvancedToggle = true;\n @Input() showReset = true;\n /** Mở panel field nâng cao (`[advanced]`). */\n @Input() advancedExpanded = false;\n /**\n * Số field advanced đang có giá trị — hiện badge trên nút expand.\n * Parent tự tính (vd. `countFilledFilters(query, ADVANCED_KEYS)`).\n */\n @Input() advancedFilterCount = 0;\n @Input() filterToggleTitle = 'Bộ lọc nâng cao';\n @Input() resetTitle = 'Xóa bộ lọc';\n\n @Output() search = new EventEmitter<void>();\n @Output() reset = new EventEmitter<void>();\n @Output() advancedExpandedChange = new EventEmitter<boolean>();\n\n effectiveCols = 4;\n stackedLayout = false;\n\n private resizeObserver?: ResizeObserver;\n private layoutFrame?: number;\n\n @HostBinding('style.--geo-table-filter-cols')\n get hostColumns(): number {\n return this.effectiveCols;\n }\n\n /** Tổng cột grid = field cols + 1 cột actions. */\n @HostBinding('style.--geo-table-filter-total-cols')\n get hostTotalColumns(): number {\n return this.effectiveCols + 1;\n }\n\n @HostBinding('style.--geo-table-filter-gap.px')\n get hostGap(): number {\n return this.gap;\n }\n\n @HostBinding('class.geo-table-filter--stacked')\n get stackedLayoutClass(): boolean {\n return this.stackedLayout;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['columns'] ||\n changes['responsiveColumns'] ||\n changes['responsiveCollapse'] ||\n changes['mobileBreakpoint']\n ) {\n this.scheduleLayout();\n }\n }\n\n ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(() => this.scheduleLayout());\n this.resizeObserver.observe(this.host.nativeElement);\n });\n this.scheduleLayout();\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n if (this.layoutFrame) {\n cancelAnimationFrame(this.layoutFrame);\n }\n }\n\n toggleAdvanced(): void {\n const next = !this.advancedExpanded;\n this.advancedExpanded = next;\n this.advancedExpandedChange.emit(next);\n }\n\n onSearch(): void {\n this.search.emit();\n }\n\n onReset(): void {\n this.reset.emit();\n }\n\n private scheduleLayout(): void {\n if (this.layoutFrame) {\n cancelAnimationFrame(this.layoutFrame);\n }\n this.layoutFrame = requestAnimationFrame(() => {\n this.ngZone.run(() => {\n this.updateResponsiveLayout();\n this.cdr.markForCheck();\n });\n });\n }\n\n private updateResponsiveLayout(): void {\n const hostWidth = this.host.nativeElement.clientWidth || 0;\n this.effectiveCols = this.getEffectiveCols(hostWidth);\n // 1 cột / dưới breakpoint: stacked — actions lên hàng đầu.\n this.stackedLayout =\n this.effectiveCols === 1 ||\n (this.responsiveCollapse && hostWidth > 0 && hostWidth < this.mobileBreakpoint);\n }\n\n private getEffectiveCols(width: number): number {\n const requested = Math.max(1, Math.floor(this.columns) || 1);\n if (!this.responsiveColumns) {\n return requested;\n }\n if (width <= 0) {\n return requested;\n }\n const preset = COL_BREAKPOINTS.find((bp) => width >= bp.minWidth)?.cols ?? 1;\n return Math.min(requested, preset);\n }\n}\n","<div\n class=\"geo-table-filter\"\n [class.geo-table-filter--expanded]=\"advancedExpanded\"\n [class.geo-table-filter--no-desktop-toggle]=\"!showAdvancedToggle\"\n>\n <div class=\"geo-table-filter__layout\">\n <div class=\"geo-table-filter__fields\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"geo-table-filter__actions\">\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n icon=\"search\"\n [disabled]=\"searchLoading\"\n (clicked)=\"onSearch()\"\n >\n {{ searchLabel }}\n </geo-button>\n\n @if (showAdvancedToggle) {\n <span\n class=\"geo-table-filter__toggle\"\n [class.geo-table-filter__toggle--active]=\"advancedExpanded\"\n [class.geo-table-filter__toggle--has-count]=\"advancedFilterCount > 0\"\n >\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"filter\"\n [iconOnly]=\"true\"\n [title]=\"filterToggleTitle\"\n [attr.aria-expanded]=\"advancedExpanded\"\n (clicked)=\"toggleAdvanced()\"\n ></geo-button>\n @if (advancedFilterCount > 0) {\n <span class=\"geo-table-filter__toggle-badge\" aria-hidden=\"true\">\n {{ advancedFilterCount > 99 ? '99+' : advancedFilterCount }}\n </span>\n }\n </span>\n }\n\n @if (showReset) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"reload\"\n [iconOnly]=\"true\"\n [title]=\"resetTitle\"\n (clicked)=\"onReset()\"\n ></geo-button>\n }\n </div>\n\n <div\n class=\"geo-table-filter__advanced\"\n [class.geo-table-filter__advanced--visible]=\"advancedExpanded\"\n >\n <ng-content select=\"[advanced]\"></ng-content>\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet uiTextareaErrorId = 0;\n\n@Component({\n selector: 'geo-textarea',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './geo-textarea.component.html',\n styleUrl: './geo-textarea.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-textarea-host',\n '[class.geo-textarea-host--block]': 'block',\n '[class.geo-textarea-host--error]': 'error',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GeoTextareaComponent),\n multi: true,\n },\n ],\n})\nexport class GeoTextareaComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() placeholder = '';\n @Input() rows = 3;\n @Input() disabled = false;\n @Input() required = false;\n @Input() error = false;\n @Input() errorMessage = '';\n @Input() maxlength?: number;\n @Input() block = true;\n\n @Output() valueChange = new EventEmitter<string>();\n\n readonly errorMessageId = `geo-textarea-error-${++uiTextareaErrorId}`;\n\n value = '';\n\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n onInput(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","@if (label) {\n <div class=\"geo-textarea__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-textarea__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<textarea\n class=\"geo-textarea__field\"\n [class.geo-textarea__field--error]=\"error\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.maxlength]=\"maxlength ?? null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n></textarea>\n\n@if (error && errorMessage) {\n <p class=\"geo-textarea__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n","import { NgClassInterface, NgStyleInterface } from 'ng-zorro-antd/core/types';\nimport { NzNotificationPlacement } from 'ng-zorro-antd/notification';\n\nexport type GeoToastType = 'success' | 'error' | 'warning' | 'info';\n\nexport type GeoToastPlacement = NzNotificationPlacement;\n\nexport const GEO_TOAST_DEFAULT_TITLES: Record<GeoToastType, string> = {\n success: 'Thành công!',\n error: 'Thất bại!',\n warning: 'Cảnh báo!',\n info: 'Thông tin!',\n};\n\nexport const GEO_TOAST_ICONS: Record<GeoToastType, string> = {\n success: 'check-circle',\n error: 'close-circle',\n warning: 'warning',\n info: 'info-circle',\n};\n\n/** Options khi gọi GeoToastService (map sang NzNotificationDataOptions). */\nexport interface GeoToastOptions {\n /** Auto close duration (ms). `0` = không tự đóng. Default `4500`. */\n duration?: number;\n /** Vị trí toast. Default `topRight`. */\n placement?: GeoToastPlacement;\n /** Pause countdown khi hover. Default `true`. */\n pauseOnHover?: boolean;\n /** Animate enter/leave. Default `true`. */\n animate?: boolean;\n /** Unique key — toast cùng key sẽ được thay thế. */\n key?: string;\n /** Hiện icon trạng thái. Default `true`. */\n showIcon?: boolean;\n /** Hiện nút đóng. Default `true`. */\n closable?: boolean;\n /** Custom icon type (Ant Design). */\n icon?: string;\n /** Inline style trên notice. */\n style?: NgStyleInterface;\n /** Extra CSS class. */\n className?: NgClassInterface | string;\n /** Arbitrary data gắn vào notice. */\n data?: unknown;\n}\n\nexport interface GeoToastConfig extends GeoToastOptions {\n type: GeoToastType;\n title?: string;\n message?: string;\n}\n\nexport interface GeoToastGlobalConfig {\n duration?: number;\n placement?: GeoToastPlacement;\n pauseOnHover?: boolean;\n animate?: boolean;\n maxStack?: number;\n top?: number;\n bottom?: number;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport {\n GEO_TOAST_DEFAULT_TITLES,\n GEO_TOAST_ICONS,\n GeoToastType,\n} from './geo-toast.types';\n\n/**\n * Toast / notification UI theo design GEO (left accent bar + icon + title + message).\n * Dùng trực tiếp trong template, hoặc qua `GeoToastService` (Ant Design notification).\n */\n@Component({\n selector: 'geo-toast',\n standalone: true,\n imports: [CommonModule, NzIconModule],\n templateUrl: './geo-toast.component.html',\n styleUrl: './geo-toast.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'geo-toast-host',\n '[class.geo-toast-host--hidden]': '!visible',\n },\n})\nexport class GeoToastComponent {\n @Input() type: GeoToastType = 'info';\n @Input() title = '';\n @Input() message = '';\n @Input() closable = true;\n @Input() showIcon = true;\n @Input() visible = true;\n /** Override Ant Design icon type. */\n @Input() icon?: string;\n\n @Output() closed = new EventEmitter<void>();\n\n get displayTitle(): string {\n return this.title || GEO_TOAST_DEFAULT_TITLES[this.type];\n }\n\n get iconType(): string {\n return this.icon || GEO_TOAST_ICONS[this.type];\n }\n\n onClose(): void {\n this.visible = false;\n this.closed.emit();\n }\n}\n","@if (visible) {\n <div\n class=\"geo-toast\"\n [class]=\"'geo-toast geo-toast--' + type\"\n role=\"status\"\n [attr.aria-live]=\"type === 'error' ? 'assertive' : 'polite'\"\n >\n <span class=\"geo-toast__accent\" aria-hidden=\"true\"></span>\n\n <div class=\"geo-toast__body\">\n @if (showIcon) {\n <span class=\"geo-toast__icon\" nz-icon [nzType]=\"iconType\" nzTheme=\"fill\"></span>\n }\n\n <div class=\"geo-toast__content\">\n <p class=\"geo-toast__title\">{{ displayTitle }}</p>\n @if (message) {\n <p class=\"geo-toast__message\">{{ message }}</p>\n }\n </div>\n\n @if (closable) {\n <button\n type=\"button\"\n class=\"geo-toast__close\"\n aria-label=\"Đóng thông báo\"\n (click)=\"onClose()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n </div>\n}\n","import { Injectable, inject } from '@angular/core';\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport {\n NzNotificationService,\n NzNotificationRef,\n} from 'ng-zorro-antd/notification';\nimport {\n GEO_TOAST_DEFAULT_TITLES,\n GeoToastConfig,\n GeoToastGlobalConfig,\n GeoToastOptions,\n GeoToastType,\n} from './geo-toast.types';\n\n/**\n * Toast service dựa trên `NzNotificationService` (Ant Design).\n *\n * @example\n * ```ts\n * this.toast.success('Thành công!', 'Lưu hồ sơ thành công');\n * this.toast.error('Thất bại!', 'Vui lòng kiểm tra lại', { duration: 0 });\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class GeoToastService {\n private readonly notification = inject(NzNotificationService);\n private readonly nzConfig = inject(NzConfigService, { optional: true });\n\n private defaults: Required<\n Pick<GeoToastOptions, 'duration' | 'placement' | 'pauseOnHover' | 'animate' | 'showIcon' | 'closable'>\n > = {\n duration: 4500,\n placement: 'topRight',\n pauseOnHover: true,\n animate: true,\n showIcon: true,\n closable: true,\n };\n\n /** Cấu hình mặc định toàn cục (duration, placement, …). */\n config(options: GeoToastGlobalConfig): void {\n if (options.duration != null) this.defaults.duration = options.duration;\n if (options.placement != null) this.defaults.placement = options.placement;\n if (options.pauseOnHover != null) this.defaults.pauseOnHover = options.pauseOnHover;\n if (options.animate != null) this.defaults.animate = options.animate;\n\n this.nzConfig?.set('notification', {\n nzDuration: this.defaults.duration,\n nzPlacement: this.defaults.placement,\n nzMaxStack: options.maxStack,\n nzTop: options.top,\n nzBottom: options.bottom,\n nzPauseOnHover: this.defaults.pauseOnHover,\n nzAnimate: this.defaults.animate,\n });\n }\n\n success(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef {\n return this.create('success', title, message, options);\n }\n\n error(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef {\n return this.create('error', title, message, options);\n }\n\n warning(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef {\n return this.create('warning', title, message, options);\n }\n\n info(title?: string, message?: string, options?: GeoToastOptions): NzNotificationRef {\n return this.create('info', title, message, options);\n }\n\n /** API tổng quát — đầy đủ type + options. */\n create(\n type: GeoToastType,\n title?: string,\n message?: string,\n options?: GeoToastOptions\n ): NzNotificationRef {\n return this.open({\n type,\n title: title ?? GEO_TOAST_DEFAULT_TITLES[type],\n message: message ?? '',\n ...options,\n });\n }\n\n /** Mở toast từ config object. */\n open(config: GeoToastConfig): NzNotificationRef {\n const type = config.type;\n const title = config.title ?? GEO_TOAST_DEFAULT_TITLES[type];\n const message = config.message ?? '';\n const duration = config.duration ?? this.defaults.duration;\n const placement = config.placement ?? this.defaults.placement;\n const pauseOnHover = config.pauseOnHover ?? this.defaults.pauseOnHover;\n const animate = config.animate ?? this.defaults.animate;\n const showIcon = config.showIcon ?? this.defaults.showIcon;\n const closable = config.closable ?? this.defaults.closable;\n\n const classList = [\n 'geo-toast-notice',\n `geo-toast-notice--${type}`,\n showIcon ? '' : 'geo-toast-notice--no-icon',\n closable ? '' : 'geo-toast-notice--no-close',\n typeof config.className === 'string' ? config.className : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n // blank + custom class khi không show icon (ẩn icon mặc định của antd)\n const nzType = showIcon ? type : 'blank';\n\n return this.notification.create(nzType, title, message, {\n nzDuration: duration,\n nzPlacement: placement,\n nzPauseOnHover: pauseOnHover,\n nzAnimate: animate,\n nzKey: config.key,\n nzStyle: config.style,\n nzClass: classList,\n nzData: config.data as object | undefined,\n nzCloseIcon: closable ? undefined : ' ',\n });\n }\n\n /** Đóng 1 toast theo messageId (từ NzNotificationRef). */\n remove(id?: string): void {\n this.notification.remove(id);\n }\n\n /** Đóng tất cả toast đang mở. */\n removeAll(): void {\n this.notification.remove();\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NzTreeModule, NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport { GeoTreeNode } from './geo-tree.types';\n\n/**\n * Tree checkable — wrap `nz-tree`. Domain dùng `geo-tree`, không import NzTreeModule.\n * API chính: `nodes` + `checkedKeys` / `checkedKeysChange` (giống pattern ILIS → nz-tree).\n */\n@Component({\n selector: 'geo-tree',\n standalone: true,\n imports: [NzTreeModule],\n templateUrl: './geo-tree.component.html',\n styleUrl: './geo-tree.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'geo-tree-host' },\n})\nexport class GeoTreeComponent {\n @Input() nodes: GeoTreeNode[] = [];\n @Input() checkable = false;\n @Input() checkedKeys: Array<string | number> = [];\n @Input() expandedKeys: Array<string | number> = [];\n @Input() showLine = false;\n @Input() blockNode = false;\n\n @Output() checkedKeysChange = new EventEmitter<Array<string | number>>();\n @Output() expandedKeysChange = new EventEmitter<Array<string | number>>();\n @Output() nodeClick = new EventEmitter<NzFormatEmitEvent>();\n\n onCheckedKeysChange(keys: Array<string | number>): void {\n this.checkedKeys = keys;\n this.checkedKeysChange.emit(keys);\n }\n\n onExpandedKeysChange(keys: Array<string | number>): void {\n this.expandedKeys = keys;\n this.expandedKeysChange.emit(keys);\n }\n}\n","<div class=\"geo-tree\">\n <nz-tree\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzCheckedKeys]=\"checkedKeys\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzShowLine]=\"showLine\"\n [nzBlockNode]=\"blockNode\"\n (nzCheckedKeysChange)=\"onCheckedKeysChange($event)\"\n (nzExpandedKeysChange)=\"onExpandedKeysChange($event)\"\n (nzClick)=\"nodeClick.emit($event)\"\n ></nz-tree>\n</div>\n","import {\n GeoColumnPickerApplyPayload,\n GeoColumnPickerItem,\n} from './geo-column-picker.types';\n\nconst STORAGE_PREFIX = 'geo-column-picker:';\n\nexport function loadColumnPickerState(key: string): GeoColumnPickerApplyPayload | null {\n try {\n const raw = sessionStorage.getItem(`${STORAGE_PREFIX}${key}`);\n if (!raw) {\n return null;\n }\n\n return JSON.parse(raw) as GeoColumnPickerApplyPayload;\n } catch {\n return null;\n }\n}\n\nexport function saveColumnPickerState(key: string, payload: GeoColumnPickerApplyPayload): void {\n sessionStorage.setItem(`${STORAGE_PREFIX}${key}`, JSON.stringify(payload));\n}\n\nexport function applyColumnPickerState(\n items: GeoColumnPickerItem[],\n state: GeoColumnPickerApplyPayload\n): GeoColumnPickerItem[] {\n return items.map((item) => ({\n ...item,\n visible: state.visibility[item.key] ?? item.visible,\n pinned: state.pinned[item.key] ?? item.pinned ?? null,\n }));\n}\n\nexport function mergeColumnPickerItems(\n items: GeoColumnPickerItem[],\n key?: string\n): GeoColumnPickerItem[] {\n if (!key) {\n return items;\n }\n\n const saved = loadColumnPickerState(key);\n return saved ? applyColumnPickerState(items, saved) : items;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';\nimport { GeoButtonComponent } from '../../geo-button/geo-button.component';\nimport { GeoCheckboxComponent } from '../../geo-checkbox/geo-checkbox.component';\nimport { GeoColumnPickerApplyPayload, GeoColumnPickerItem } from './geo-column-picker.types';\nimport { saveColumnPickerState } from './geo-column-picker.storage';\n\n@Component({\n selector: 'geo-column-picker',\n standalone: true,\n imports: [CommonModule, NgZorroAntdModule, GeoButtonComponent, GeoCheckboxComponent],\n templateUrl: './geo-column-picker.component.html',\n styleUrl: './geo-column-picker.component.scss',\n})\nexport class GeoColumnPickerComponent {\n @Input() triggerLabel = 'Ẩn hiện cột';\n @Input() hint = 'Chọn cột hiển thị trên bảng.';\n @Input() items: GeoColumnPickerItem[] = [];\n /** Lưu trạng thái ẩn/hiện cột theo session khi người dùng áp dụng */\n @Input() storageKey?: string;\n\n @Output() apply = new EventEmitter<GeoColumnPickerApplyPayload>();\n\n dropdownVisible = false;\n draftItems: GeoColumnPickerItem[] = [];\n\n onDropdownVisibleChange(visible: boolean): void {\n if (visible) {\n this.syncDraft();\n }\n }\n\n onItemChange(key: string, visible: boolean): void {\n this.draftItems = this.draftItems.map((item) =>\n item.key === key ? { ...item, visible } : item\n );\n }\n\n onApply(): void {\n const visibility: Record<string, boolean> = {};\n\n for (const item of this.draftItems) {\n visibility[item.key] = item.visible;\n }\n\n /** `pinned` giữ empty để tương thích payload/storage cũ — không còn UI ghim/di chuyển cột. */\n const payload: GeoColumnPickerApplyPayload = { visibility, pinned: {} };\n this.apply.emit(payload);\n\n if (this.storageKey) {\n saveColumnPickerState(this.storageKey, payload);\n }\n\n this.dropdownVisible = false;\n }\n\n onReset(): void {\n this.syncDraft();\n }\n\n private syncDraft(): void {\n this.draftItems = this.items.map((item) => ({ ...item }));\n }\n}\n","<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel\"\n >\n {{ triggerLabel }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">Đặt lại</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">Áp dụng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';\nimport { GeoButtonComponent } from '../../geo-button/geo-button.component';\nimport { GeoColumnPickerComponent } from '../geo-column-picker/geo-column-picker.component';\nimport { GeoColumnPickerApplyPayload, GeoColumnPickerItem } from '../geo-column-picker/geo-column-picker.types';\n\n@Component({\n selector: 'geo-table-toolbar',\n standalone: true,\n imports: [CommonModule, NgZorroAntdModule, GeoButtonComponent, GeoColumnPickerComponent],\n templateUrl: './geo-table-toolbar.component.html',\n styleUrl: './geo-table-toolbar.component.scss',\n})\nexport class GeoTableToolbarComponent {\n @Input() resultLabel = '';\n @Input() resultCount: number | null = null;\n @Input() selectedCount = 0;\n @Input() showDelete = true;\n @Input() showExport = true;\n @Input() showColumnToggle = true;\n @Input() showAdd = true;\n @Input() addLabel = 'Thêm mới';\n @Input() columnItems: GeoColumnPickerItem[] = [];\n /** Key lưu trạng thái ẩn/hiện cột trong sessionStorage */\n @Input() columnStorageKey?: string;\n\n @Output() deleteClick = new EventEmitter<void>();\n @Output() exportClick = new EventEmitter<void>();\n @Output() toggleColumns = new EventEmitter<void>();\n @Output() columnApply = new EventEmitter<GeoColumnPickerApplyPayload>();\n @Output() addClick = new EventEmitter<void>();\n\n get displayResultLabel(): string {\n if (this.resultLabel) {\n return this.resultLabel;\n }\n\n const count = this.resultCount ?? 0;\n return `Kết quả tìm kiếm (${count} kết quả)`;\n }\n}\n","<div class=\"geo-table-toolbar\">\n <div class=\"geo-table-toolbar__info\">{{ displayResultLabel }}</div>\n\n <div class=\"geo-table-toolbar__actions\">\n @if (showDelete && selectedCount > 0) {\n <geo-button\n appearance=\"secondary\"\n color=\"danger\"\n icon=\"delete\"\n title=\"Xóa\"\n (clicked)=\"deleteClick.emit()\"\n >\n Xóa ({{ selectedCount }})\n </geo-button>\n }\n\n @if (showExport) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"download\"\n title=\"Xuất dữ liệu\"\n (clicked)=\"exportClick.emit()\"\n >\n Xuất dữ liệu\n </geo-button>\n }\n\n @if (showColumnToggle) {\n @if (columnItems.length) {\n <geo-column-picker\n [items]=\"columnItems\"\n [storageKey]=\"columnStorageKey\"\n (apply)=\"columnApply.emit($event)\"\n ></geo-column-picker>\n } @else {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n title=\"Ẩn hiện cột\"\n (clicked)=\"toggleColumns.emit()\"\n >\n Ẩn hiện cột\n </geo-button>\n }\n }\n\n @if (showAdd) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n icon=\"plus\"\n [title]=\"addLabel\"\n (clicked)=\"addClick.emit()\"\n >\n {{ addLabel }}\n </geo-button>\n }\n </div>\n</div>\n","/*\n * Public API Surface of geo-ui\n */\n\nexport * from './lib/styles/tokens';\nexport * from './lib/ng-zorro/ng-zorro-antd.module';\nexport * from './lib/figma';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i4"],"mappings":"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"}
|