@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.
Files changed (165) hide show
  1. package/AGENTS.md +25 -0
  2. package/README.md +46 -0
  3. package/ai/AGENTS.md +86 -0
  4. package/ai/README.md +44 -0
  5. package/ai/catalog.json +882 -0
  6. package/ai/components/geo-alert.md +56 -0
  7. package/ai/components/geo-back-button.md +54 -0
  8. package/ai/components/geo-breadcrumb.md +52 -0
  9. package/ai/components/geo-button.md +63 -0
  10. package/ai/components/geo-checkbox.md +54 -0
  11. package/ai/components/geo-column-picker.md +54 -0
  12. package/ai/components/geo-confirm-modal.md +70 -0
  13. package/ai/components/geo-date-picker.md +65 -0
  14. package/ai/components/geo-date-range-picker.md +64 -0
  15. package/ai/components/geo-file-picker.md +62 -0
  16. package/ai/components/geo-form-modal.md +88 -0
  17. package/ai/components/geo-icon.md +53 -0
  18. package/ai/components/geo-input.md +65 -0
  19. package/ai/components/geo-page-title.md +53 -0
  20. package/ai/components/geo-pagination.md +59 -0
  21. package/ai/components/geo-radio.md +67 -0
  22. package/ai/components/geo-row-actions.md +54 -0
  23. package/ai/components/geo-select.md +68 -0
  24. package/ai/components/geo-slider.md +56 -0
  25. package/ai/components/geo-status-tag.md +51 -0
  26. package/ai/components/geo-step-form-layout.md +81 -0
  27. package/ai/components/geo-stepper.md +63 -0
  28. package/ai/components/geo-table-filter.md +65 -0
  29. package/ai/components/geo-table-pagination.md +59 -0
  30. package/ai/components/geo-table-toolbar.md +64 -0
  31. package/ai/components/geo-table.md +98 -0
  32. package/ai/components/geo-tabs.md +62 -0
  33. package/ai/components/geo-textarea.md +59 -0
  34. package/ai/components/geo-toast.md +61 -0
  35. package/ai/components/geo-tree.md +58 -0
  36. package/ai/components/geo-typography.md +57 -0
  37. package/ai/components/geo-upload.md +78 -0
  38. package/ai/recipes.md +111 -0
  39. package/esm2022/geoit-ui.mjs +5 -0
  40. package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +58 -0
  41. package/esm2022/lib/figma/geo-alert/geo-alert.types.mjs +7 -0
  42. package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +48 -0
  43. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +33 -0
  44. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.types.mjs +2 -0
  45. package/esm2022/lib/figma/geo-button/geo-button.component.mjs +77 -0
  46. package/esm2022/lib/figma/geo-button/geo-button.types.mjs +2 -0
  47. package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +34 -0
  48. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +76 -0
  49. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.types.mjs +2 -0
  50. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +119 -0
  51. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.types.mjs +2 -0
  52. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +116 -0
  53. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.types.mjs +2 -0
  54. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +145 -0
  55. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.types.mjs +2 -0
  56. package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +153 -0
  57. package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +51 -0
  58. package/esm2022/lib/figma/geo-icon/geo-icon.types.mjs +8 -0
  59. package/esm2022/lib/figma/geo-input/geo-input.component.mjs +118 -0
  60. package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +51 -0
  61. package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +54 -0
  62. package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +95 -0
  63. package/esm2022/lib/figma/geo-radio/geo-radio.types.mjs +2 -0
  64. package/esm2022/lib/figma/geo-select/geo-select.component.mjs +113 -0
  65. package/esm2022/lib/figma/geo-select/geo-select.types.mjs +2 -0
  66. package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +43 -0
  67. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +62 -0
  68. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.types.mjs +30 -0
  69. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +157 -0
  70. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.types.mjs +2 -0
  71. package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +77 -0
  72. package/esm2022/lib/figma/geo-stepper/geo-stepper.types.mjs +2 -0
  73. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +65 -0
  74. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.mjs +31 -0
  75. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.mjs +2 -0
  76. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +64 -0
  77. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.mjs +24 -0
  78. package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +195 -0
  79. package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +118 -0
  80. package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +68 -0
  81. package/esm2022/lib/figma/geo-table/geo-table.component.mjs +381 -0
  82. package/esm2022/lib/figma/geo-table/geo-table.types.mjs +4 -0
  83. package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +94 -0
  84. package/esm2022/lib/figma/geo-tabs/geo-tabs.types.mjs +2 -0
  85. package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +85 -0
  86. package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +57 -0
  87. package/esm2022/lib/figma/geo-toast/geo-toast.service.mjs +116 -0
  88. package/esm2022/lib/figma/geo-toast/geo-toast.types.mjs +13 -0
  89. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +52 -0
  90. package/esm2022/lib/figma/geo-tree/geo-tree.types.mjs +2 -0
  91. package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +112 -0
  92. package/esm2022/lib/figma/geo-typography/geo-typography.types.mjs +96 -0
  93. package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +218 -0
  94. package/esm2022/lib/figma/geo-upload/geo-upload.types.mjs +30 -0
  95. package/esm2022/lib/figma/index.mjs +56 -0
  96. package/esm2022/lib/ng-zorro/ng-zorro-antd.module.mjs +293 -0
  97. package/esm2022/lib/styles/tokens.mjs +144 -0
  98. package/esm2022/public-api.mjs +7 -0
  99. package/fesm2022/geoit-ui.mjs +3805 -0
  100. package/fesm2022/geoit-ui.mjs.map +1 -0
  101. package/index.d.ts +5 -0
  102. package/lib/figma/geo-alert/geo-alert.component.d.ts +17 -0
  103. package/lib/figma/geo-alert/geo-alert.types.d.ts +2 -0
  104. package/lib/figma/geo-back-button/geo-back-button.component.d.ts +18 -0
  105. package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +12 -0
  106. package/lib/figma/geo-breadcrumb/geo-breadcrumb.types.d.ts +10 -0
  107. package/lib/figma/geo-button/geo-button.component.d.ts +27 -0
  108. package/lib/figma/geo-button/geo-button.types.d.ts +4 -0
  109. package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +12 -0
  110. package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +24 -0
  111. package/lib/figma/geo-confirm-modal/geo-confirm-modal.types.d.ts +5 -0
  112. package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +35 -0
  113. package/lib/figma/geo-date-picker/geo-date-picker.types.d.ts +2 -0
  114. package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +34 -0
  115. package/lib/figma/geo-date-range-picker/geo-date-range-picker.types.d.ts +2 -0
  116. package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +39 -0
  117. package/lib/figma/geo-file-picker/geo-file-picker.types.d.ts +4 -0
  118. package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +57 -0
  119. package/lib/figma/geo-icon/geo-icon.component.d.ts +19 -0
  120. package/lib/figma/geo-icon/geo-icon.types.d.ts +3 -0
  121. package/lib/figma/geo-input/geo-input.component.d.ts +37 -0
  122. package/lib/figma/geo-page-title/geo-page-title.component.d.ts +22 -0
  123. package/lib/figma/geo-pagination/geo-pagination.component.d.ts +21 -0
  124. package/lib/figma/geo-radio/geo-radio.component.d.ts +31 -0
  125. package/lib/figma/geo-radio/geo-radio.types.d.ts +9 -0
  126. package/lib/figma/geo-select/geo-select.component.d.ts +33 -0
  127. package/lib/figma/geo-select/geo-select.types.d.ts +7 -0
  128. package/lib/figma/geo-slider/geo-slider.component.d.ts +17 -0
  129. package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +18 -0
  130. package/lib/figma/geo-status-tag/geo-status-tag.types.d.ts +13 -0
  131. package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +67 -0
  132. package/lib/figma/geo-step-form-layout/geo-step-form-layout.types.d.ts +9 -0
  133. package/lib/figma/geo-stepper/geo-stepper.component.d.ts +42 -0
  134. package/lib/figma/geo-stepper/geo-stepper.types.d.ts +9 -0
  135. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +20 -0
  136. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.d.ts +5 -0
  137. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.d.ts +17 -0
  138. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +21 -0
  139. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.d.ts +13 -0
  140. package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +75 -0
  141. package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +33 -0
  142. package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +24 -0
  143. package/lib/figma/geo-table/geo-table.component.d.ts +113 -0
  144. package/lib/figma/geo-table/geo-table.types.d.ts +47 -0
  145. package/lib/figma/geo-tabs/geo-tabs.component.d.ts +31 -0
  146. package/lib/figma/geo-tabs/geo-tabs.types.d.ts +7 -0
  147. package/lib/figma/geo-textarea/geo-textarea.component.d.ts +27 -0
  148. package/lib/figma/geo-toast/geo-toast.component.d.ts +23 -0
  149. package/lib/figma/geo-toast/geo-toast.service.d.ts +33 -0
  150. package/lib/figma/geo-toast/geo-toast.types.d.ts +45 -0
  151. package/lib/figma/geo-tree/geo-tree.component.d.ts +23 -0
  152. package/lib/figma/geo-tree/geo-tree.types.d.ts +12 -0
  153. package/lib/figma/geo-typography/geo-typography.component.d.ts +35 -0
  154. package/lib/figma/geo-typography/geo-typography.types.d.ts +12 -0
  155. package/lib/figma/geo-upload/geo-upload.component.d.ts +59 -0
  156. package/lib/figma/geo-upload/geo-upload.types.d.ts +13 -0
  157. package/lib/figma/index.d.ts +55 -0
  158. package/lib/ng-zorro/ng-zorro-antd.module.d.ts +76 -0
  159. package/lib/styles/tokens.d.ts +184 -0
  160. package/package.json +38 -0
  161. package/public-api.d.ts +3 -0
  162. package/src/lib/styles/design-tokens.scss +143 -0
  163. package/src/lib/styles/geo-toast-notification.scss +129 -0
  164. package/src/lib/styles/scrollbar.scss +38 -0
  165. package/src/lib/styles/theme.scss +153 -0
@@ -0,0 +1,143 @@
1
+ /**
2
+ * GEO UI design tokens — single source of truth for colors, radius, typography.
3
+ * Components MUST use these CSS variables; never hardcode hex colors or radii.
4
+ */
5
+ :root {
6
+ /* Primary */
7
+ --geo-color-primary-default: #9a4828;
8
+ --geo-color-primary-hover: #7d3a20;
9
+ --geo-color-primary-light: #b5643f;
10
+ --geo-color-primary-dark: #2c1810;
11
+ --geo-color-primary-background: #faf5ed;
12
+ --geo-color-primary-background-alt: #f5f0e8;
13
+ --geo-color-primary-border: #e8e0d8;
14
+ --geo-color-primary-surface-light: #f8e6de;
15
+ /* Secondary button hover */
16
+ --geo-color-primary-secondary-hover: #faf5ed;
17
+
18
+ /* Neutral */
19
+ --geo-color-neutral-900: #111827;
20
+ --geo-color-neutral-800: #212121;
21
+ --geo-color-neutral-700: #374151;
22
+ --geo-color-neutral-500: #6b7280;
23
+ --geo-color-neutral-400: #9ca3af;
24
+ --geo-color-neutral-300: #d1d5db;
25
+ --geo-color-neutral-200: #e5e7eb;
26
+ --geo-color-neutral-100: #f3f4f6;
27
+ --geo-color-neutral-white: #ffffff;
28
+ --geo-color-neutral-disabled-text: #8f9294;
29
+
30
+ /* Success */
31
+ --geo-color-success-dark: #166534;
32
+ --geo-color-success-default: #22c55e;
33
+ --geo-color-success-light: #dcfce7;
34
+
35
+ /* Error */
36
+ --geo-color-error-dark: #991b1b;
37
+ --geo-color-error-default: #dc2626;
38
+ --geo-color-error-light: #fee2e2;
39
+
40
+ /* Warning */
41
+ --geo-color-warning-dark: #92400e;
42
+ --geo-color-warning-default: #f59e0b;
43
+ --geo-color-warning-light: #fef3c7;
44
+
45
+ /* Info */
46
+ --geo-color-info-dark: #1e40af;
47
+ --geo-color-info-default: #3b82f6;
48
+ --geo-color-info-light: #dbeafe;
49
+
50
+ /* Teal — status badge (Trả kết quả) */
51
+ --geo-color-teal-dark: #0f766e;
52
+ --geo-color-teal-default: #14b8a6;
53
+ --geo-color-teal-light: #ccfbf1;
54
+
55
+ /* Semantic aliases (legacy-friendly names used by components) */
56
+ --color-primary: var(--geo-color-primary-default);
57
+ --color-primary-hover: var(--geo-color-primary-hover);
58
+ --color-primary-dark: var(--geo-color-primary-dark);
59
+ --color-primary-light: var(--geo-color-primary-light);
60
+ --color-primary-surface: var(--geo-color-primary-surface-light);
61
+ --color-primary-surface-hover: var(--geo-color-primary-background);
62
+ --color-primary-secondary-hover: var(--geo-color-primary-secondary-hover);
63
+ --color-primary-border: var(--geo-color-primary-border);
64
+ --color-primary-background: var(--geo-color-primary-background);
65
+ --color-primary-background-alt: var(--geo-color-primary-background-alt);
66
+
67
+ --color-ink: var(--geo-color-neutral-900);
68
+ --color-ink-strong: var(--geo-color-neutral-900);
69
+ --color-ink-body: var(--geo-color-neutral-700);
70
+ --color-ink-muted: var(--geo-color-neutral-500);
71
+ --color-ink-subtle: var(--geo-color-neutral-400);
72
+ --color-disabled-text: var(--geo-color-neutral-disabled-text);
73
+
74
+ --color-surface-white: var(--geo-color-neutral-white);
75
+ --color-surface-muted: var(--geo-color-neutral-100);
76
+ --color-surface-border: var(--geo-color-neutral-200);
77
+ --color-surface-divider: var(--geo-color-neutral-100);
78
+ --color-border: var(--geo-color-neutral-300);
79
+ --color-border-subtle: var(--geo-color-primary-border);
80
+
81
+ --color-success: var(--geo-color-success-default);
82
+ --color-success-dark: var(--geo-color-success-dark);
83
+ --color-success-light: var(--geo-color-success-light);
84
+
85
+ --color-error: var(--geo-color-error-default);
86
+ --color-error-dark: var(--geo-color-error-dark);
87
+ --color-error-light: var(--geo-color-error-light);
88
+ --color-danger: var(--geo-color-error-default);
89
+ --color-danger-dark: var(--geo-color-error-dark);
90
+ --color-danger-light: var(--geo-color-error-light);
91
+
92
+ --color-warning: var(--geo-color-warning-default);
93
+ --color-warning-dark: var(--geo-color-warning-dark);
94
+ --color-warning-light: var(--geo-color-warning-light);
95
+
96
+ --color-info: var(--geo-color-info-default);
97
+ --color-info-dark: var(--geo-color-info-dark);
98
+ --color-info-light: var(--geo-color-info-light);
99
+
100
+ --color-teal: var(--geo-color-teal-default);
101
+ --color-teal-dark: var(--geo-color-teal-dark);
102
+ --color-teal-light: var(--geo-color-teal-light);
103
+
104
+ /* Spacing / radius shared — default corner radius 6px */
105
+ --geo-radius: 6px;
106
+ --geo-radius-sm: var(--geo-radius);
107
+ --geo-radius-md: var(--geo-radius);
108
+ --geo-radius-lg: var(--geo-radius);
109
+ --geo-control-height: 40px;
110
+
111
+ /* Typography — Inter + type scale */
112
+ --geo-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
113
+ --geo-font-weight-regular: 400;
114
+ --geo-font-weight-medium: 500;
115
+ --geo-font-weight-semibold: 600;
116
+ --geo-font-weight-bold: 700;
117
+
118
+ --geo-font-size-h1: 28px;
119
+ --geo-line-height-h1: 36px;
120
+ --geo-font-size-h2: 24px;
121
+ --geo-line-height-h2: 32px;
122
+ --geo-font-size-h3: 20px;
123
+ --geo-line-height-h3: 28px;
124
+ --geo-font-size-h4: 16px;
125
+ --geo-line-height-h4: 24px;
126
+ --geo-font-size-subtitle: 14px;
127
+ --geo-line-height-subtitle: 20px;
128
+ --geo-font-size-body: 14px;
129
+ --geo-line-height-body: 20px;
130
+ --geo-font-size-body-small: 13px;
131
+ --geo-line-height-body-small: 18px;
132
+ --geo-font-size-caption: 12px;
133
+ --geo-line-height-caption: 16px;
134
+ --geo-font-size-overline: 11px;
135
+ --geo-line-height-overline: 16px;
136
+ --geo-font-size-tiny: 10px;
137
+ --geo-line-height-tiny: 14px;
138
+
139
+ /* Legacy size aliases */
140
+ --geo-font-size-sm: var(--geo-font-size-body-small);
141
+ --geo-font-size-md: var(--geo-font-size-body);
142
+ --geo-font-size-lg: var(--geo-font-size-h4);
143
+ }
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Ant Design notification skin — khi mở qua GeoToastService.
3
+ * Gắn class `geo-toast-notice geo-toast-notice--{type}` lên notice.
4
+ */
5
+ .ant-notification-notice.geo-toast-notice {
6
+ position: relative;
7
+ padding: 12px 12px 12px 16px;
8
+ width: 480px;
9
+ max-width: calc(100vw - 32px);
10
+ border-radius: var(--geo-radius);
11
+ border: 1px solid transparent;
12
+ box-shadow: none;
13
+ overflow: hidden;
14
+ font-family: var(--geo-font-family);
15
+
16
+ &::before {
17
+ content: '';
18
+ position: absolute;
19
+ top: 0;
20
+ left: 0;
21
+ bottom: 0;
22
+ width: 5px;
23
+ }
24
+
25
+ .ant-notification-notice-with-icon .ant-notification-notice-message {
26
+ margin-bottom: 2px;
27
+ margin-left: 30px;
28
+ font-size: var(--geo-font-size-body);
29
+ font-weight: var(--geo-font-weight-bold);
30
+ line-height: var(--geo-line-height-body);
31
+ }
32
+
33
+ .ant-notification-notice-with-icon .ant-notification-notice-description {
34
+ margin-left: 30px;
35
+ font-size: var(--geo-font-size-body-small);
36
+ font-weight: var(--geo-font-weight-regular);
37
+ line-height: var(--geo-line-height-body-small);
38
+ color: var(--geo-color-neutral-800);
39
+ }
40
+
41
+ .ant-notification-notice-icon {
42
+ margin-left: 4px;
43
+ font-size: 20px;
44
+ line-height: 20px;
45
+ }
46
+
47
+ .ant-notification-notice-close {
48
+ top: 12px;
49
+ right: 12px;
50
+ color: inherit;
51
+ }
52
+
53
+ &.geo-toast-notice--no-icon {
54
+ .ant-notification-notice-message,
55
+ .ant-notification-notice-description {
56
+ margin-left: 0;
57
+ }
58
+
59
+ .ant-notification-notice-icon {
60
+ display: none;
61
+ }
62
+ }
63
+
64
+ &.geo-toast-notice--no-close {
65
+ .ant-notification-notice-close {
66
+ display: none;
67
+ }
68
+ }
69
+
70
+ &--success {
71
+ background: var(--geo-color-success-light);
72
+ border-color: color-mix(in srgb, var(--geo-color-success-default) 45%, var(--geo-color-success-light));
73
+
74
+ &::before {
75
+ background: var(--geo-color-success-default);
76
+ }
77
+
78
+ .ant-notification-notice-icon,
79
+ .ant-notification-notice-message,
80
+ .ant-notification-notice-close {
81
+ color: var(--geo-color-success-default);
82
+ }
83
+ }
84
+
85
+ &--error {
86
+ background: var(--geo-color-error-light);
87
+ border-color: color-mix(in srgb, var(--geo-color-error-default) 40%, var(--geo-color-error-light));
88
+
89
+ &::before {
90
+ background: var(--geo-color-error-default);
91
+ }
92
+
93
+ .ant-notification-notice-icon,
94
+ .ant-notification-notice-message,
95
+ .ant-notification-notice-close {
96
+ color: var(--geo-color-error-default);
97
+ }
98
+ }
99
+
100
+ &--warning {
101
+ background: var(--geo-color-warning-light);
102
+ border-color: color-mix(in srgb, var(--geo-color-warning-default) 45%, var(--geo-color-warning-light));
103
+
104
+ &::before {
105
+ background: var(--geo-color-warning-default);
106
+ }
107
+
108
+ .ant-notification-notice-icon,
109
+ .ant-notification-notice-message,
110
+ .ant-notification-notice-close {
111
+ color: var(--geo-color-warning-default);
112
+ }
113
+ }
114
+
115
+ &--info {
116
+ background: var(--geo-color-info-light);
117
+ border-color: color-mix(in srgb, var(--geo-color-info-default) 40%, var(--geo-color-info-light));
118
+
119
+ &::before {
120
+ background: var(--geo-color-info-default);
121
+ }
122
+
123
+ .ant-notification-notice-icon,
124
+ .ant-notification-notice-message,
125
+ .ant-notification-notice-close {
126
+ color: var(--geo-color-info-default);
127
+ }
128
+ }
129
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Cross-browser scrollbar mixins — thumb colors from GEO design tokens.
3
+ */
4
+ @mixin geo-scrollbar($size: var(--scrollbar-size, 8px)) {
5
+ scrollbar-width: thin;
6
+ scrollbar-color: var(--geo-color-neutral-400) transparent;
7
+
8
+ &::-webkit-scrollbar {
9
+ width: $size;
10
+ height: $size;
11
+ background: transparent;
12
+ }
13
+
14
+ &::-webkit-scrollbar-track {
15
+ background: transparent;
16
+ border-radius: 999px;
17
+ }
18
+
19
+ &::-webkit-scrollbar-thumb {
20
+ background-color: var(--geo-color-neutral-400);
21
+ border-radius: 999px;
22
+ border: 2px solid transparent;
23
+ background-clip: padding-box;
24
+ min-height: 40px;
25
+ }
26
+
27
+ &::-webkit-scrollbar-thumb:hover {
28
+ background-color: var(--geo-color-neutral-500);
29
+ }
30
+
31
+ &::-webkit-scrollbar-corner {
32
+ background: transparent;
33
+ }
34
+ }
35
+
36
+ .geo-scrollbar {
37
+ @include geo-scrollbar();
38
+ }
@@ -0,0 +1,153 @@
1
+ /**
2
+ * ng-zorro theme overrides mapped to GEO design tokens.
3
+ * Loaded after ng-zorro CSS so Ant Design primitives follow the palette.
4
+ */
5
+
6
+ /* Primary / brand */
7
+ .ant-btn-primary {
8
+ background-color: var(--geo-color-primary-default);
9
+ border-color: var(--geo-color-primary-default);
10
+
11
+ &:not(:disabled):hover {
12
+ background-color: var(--geo-color-primary-hover);
13
+ border-color: var(--geo-color-primary-hover);
14
+ }
15
+ }
16
+
17
+ .ant-checkbox-checked .ant-checkbox-inner,
18
+ .ant-radio-checked .ant-radio-inner {
19
+ background-color: var(--geo-color-primary-default);
20
+ border-color: var(--geo-color-primary-default);
21
+ }
22
+
23
+ .ant-radio-inner::after {
24
+ background-color: var(--geo-color-neutral-white);
25
+ }
26
+
27
+ .ant-switch-checked {
28
+ background: var(--geo-color-primary-default);
29
+ }
30
+
31
+ .ant-tabs-ink-bar,
32
+ .ant-slider-track,
33
+ .ant-pagination-item-active {
34
+ background: var(--geo-color-primary-default);
35
+ border-color: var(--geo-color-primary-default);
36
+ }
37
+
38
+ .ant-pagination-item-active a {
39
+ color: var(--geo-color-primary-default);
40
+ }
41
+
42
+ .ant-input:hover,
43
+ .ant-input:focus,
44
+ .ant-input-focused,
45
+ .ant-select:not(.ant-select-disabled):hover .ant-select-selector,
46
+ .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector,
47
+ .ant-picker:hover,
48
+ .ant-picker-focused {
49
+ border-color: var(--geo-color-primary-default) !important;
50
+ }
51
+
52
+ .ant-input:focus,
53
+ .ant-input-focused,
54
+ .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector,
55
+ .ant-picker-focused {
56
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--geo-color-primary-default) 16%, transparent) !important;
57
+ }
58
+
59
+ .ant-menu-light .ant-menu-item-selected,
60
+ .ant-menu-light .ant-menu-item:hover {
61
+ color: var(--geo-color-primary-default);
62
+ }
63
+
64
+ .ant-tag-success {
65
+ color: var(--geo-color-success-dark);
66
+ background: var(--geo-color-success-light);
67
+ border-color: var(--geo-color-success-default);
68
+ }
69
+
70
+ .ant-tag-error {
71
+ color: var(--geo-color-error-dark);
72
+ background: var(--geo-color-error-light);
73
+ border-color: var(--geo-color-error-default);
74
+ }
75
+
76
+ .ant-tag-warning {
77
+ color: var(--geo-color-warning-dark);
78
+ background: var(--geo-color-warning-light);
79
+ border-color: var(--geo-color-warning-default);
80
+ }
81
+
82
+ .ant-tag-processing {
83
+ color: var(--geo-color-info-dark);
84
+ background: var(--geo-color-info-light);
85
+ border-color: var(--geo-color-info-default);
86
+ }
87
+
88
+ @import './geo-toast-notification';
89
+
90
+ /* Default corner radius for Ant Design primitives */
91
+ .ant-btn,
92
+ .ant-input,
93
+ .ant-input-affix-wrapper,
94
+ .ant-input-number,
95
+ .ant-select:not(.ant-select-customize-input) .ant-select-selector,
96
+ .ant-picker,
97
+ .ant-modal-content,
98
+ .ant-modal-confirm-body-wrapper,
99
+ .ant-notification-notice,
100
+ .ant-card,
101
+ .ant-alert,
102
+ .ant-dropdown-menu,
103
+ .ant-select-dropdown,
104
+ .ant-picker-panel-container,
105
+ .ant-pagination-item,
106
+ .ant-pagination-prev .ant-pagination-item-link,
107
+ .ant-pagination-next .ant-pagination-item-link {
108
+ border-radius: var(--geo-radius);
109
+ }
110
+
111
+ body {
112
+ color: var(--geo-color-neutral-900);
113
+ background: var(--geo-color-neutral-white);
114
+ font-family: var(--geo-font-family);
115
+ font-size: var(--geo-font-size-body);
116
+ font-weight: var(--geo-font-weight-regular);
117
+ line-height: var(--geo-line-height-body);
118
+ }
119
+
120
+ /* Align Ant Design Typography defaults with GEO type scale */
121
+ .ant-typography {
122
+ font-family: var(--geo-font-family);
123
+ color: var(--geo-color-neutral-900);
124
+ }
125
+
126
+ .ant-typography h1,
127
+ h1.ant-typography {
128
+ font-size: var(--geo-font-size-h1);
129
+ font-weight: var(--geo-font-weight-bold);
130
+ line-height: var(--geo-line-height-h1);
131
+ }
132
+
133
+ .ant-typography h2,
134
+ h2.ant-typography {
135
+ font-size: var(--geo-font-size-h2);
136
+ font-weight: var(--geo-font-weight-bold);
137
+ line-height: var(--geo-line-height-h2);
138
+ }
139
+
140
+ .ant-typography h3,
141
+ h3.ant-typography {
142
+ font-size: var(--geo-font-size-h3);
143
+ font-weight: var(--geo-font-weight-bold);
144
+ line-height: var(--geo-line-height-h3);
145
+ }
146
+
147
+ .ant-typography h4,
148
+ h4.ant-typography {
149
+ font-size: var(--geo-font-size-h4);
150
+ font-weight: var(--geo-font-weight-bold);
151
+ line-height: var(--geo-line-height-h4);
152
+ }
153
+