gcp-material-ui 0.0.4

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 (125) hide show
  1. package/.agents/skills/charts/SKILL.MD +103 -0
  2. package/.agents/skills/creating-common-components/SKILL.MD +121 -0
  3. package/.agents/skills/creating-pages/SKILL.MD +205 -0
  4. package/.agents/skills/sidebar/SKILL.MD +63 -0
  5. package/.agents/skills/workflow-graph/SKILL.MD +160 -0
  6. package/.dockerignore +4 -0
  7. package/.editorconfig +17 -0
  8. package/.prettierrc +12 -0
  9. package/Dockerfile +14 -0
  10. package/PUBLISH_GUIDE.md +33 -0
  11. package/README.md +48 -0
  12. package/angular.json +79 -0
  13. package/deploy.sh +47 -0
  14. package/nginx.conf +15 -0
  15. package/package.json +48 -0
  16. package/public/favicon.ico +0 -0
  17. package/public/google-cloud-combined.svg +1 -0
  18. package/publish.sh +14 -0
  19. package/src/_variables.scss +183 -0
  20. package/src/app/app.config.ts +19 -0
  21. package/src/app/app.html +1 -0
  22. package/src/app/app.routes.ts +65 -0
  23. package/src/app/app.scss +0 -0
  24. package/src/app/app.spec.ts +23 -0
  25. package/src/app/app.ts +12 -0
  26. package/src/app/auth/auth.guard.ts +7 -0
  27. package/src/app/auth/auth.service.ts +50 -0
  28. package/src/app/components/page/page.html +20 -0
  29. package/src/app/components/page/page.scss +41 -0
  30. package/src/app/components/page/page.ts +15 -0
  31. package/src/app/dashboard/dashboard.html +287 -0
  32. package/src/app/dashboard/dashboard.scss +196 -0
  33. package/src/app/dashboard/dashboard.ts +24 -0
  34. package/src/app/demo-components/buttons/buttons-demo.html +92 -0
  35. package/src/app/demo-components/buttons/buttons-demo.scss +38 -0
  36. package/src/app/demo-components/buttons/buttons-demo.ts +23 -0
  37. package/src/app/demo-components/card/card-demo.html +52 -0
  38. package/src/app/demo-components/card/card-demo.scss +47 -0
  39. package/src/app/demo-components/card/card-demo.ts +21 -0
  40. package/src/app/demo-components/charts/charts-demo.html +88 -0
  41. package/src/app/demo-components/charts/charts-demo.scss +50 -0
  42. package/src/app/demo-components/charts/charts-demo.ts +201 -0
  43. package/src/app/demo-components/chips/chips-demo.html +87 -0
  44. package/src/app/demo-components/chips/chips-demo.scss +6 -0
  45. package/src/app/demo-components/chips/chips-demo.ts +57 -0
  46. package/src/app/demo-components/code-snippet/code-snippet-demo.html +52 -0
  47. package/src/app/demo-components/code-snippet/code-snippet-demo.scss +20 -0
  48. package/src/app/demo-components/code-snippet/code-snippet-demo.ts +31 -0
  49. package/src/app/demo-components/dialog/dialog-demo.html +47 -0
  50. package/src/app/demo-components/dialog/dialog-demo.ts +90 -0
  51. package/src/app/demo-components/dialog/dialog-examples.ts +126 -0
  52. package/src/app/demo-components/expand-button/expand-button-demo.html +28 -0
  53. package/src/app/demo-components/expand-button/expand-button-demo.scss +45 -0
  54. package/src/app/demo-components/expand-button/expand-button-demo.ts +28 -0
  55. package/src/app/demo-components/expansion/expansion-demo.html +105 -0
  56. package/src/app/demo-components/expansion/expansion-demo.scss +11 -0
  57. package/src/app/demo-components/expansion/expansion-demo.ts +49 -0
  58. package/src/app/demo-components/forms/forms-demo.html +114 -0
  59. package/src/app/demo-components/forms/forms-demo.scss +43 -0
  60. package/src/app/demo-components/forms/forms-demo.ts +57 -0
  61. package/src/app/demo-components/message/message-demo.html +47 -0
  62. package/src/app/demo-components/message/message-demo.ts +33 -0
  63. package/src/app/demo-components/message/message.html +15 -0
  64. package/src/app/demo-components/message/message.scss +115 -0
  65. package/src/app/demo-components/message/message.ts +39 -0
  66. package/src/app/demo-components/sidebar/sidebar-demo.html +46 -0
  67. package/src/app/demo-components/sidebar/sidebar-demo.scss +47 -0
  68. package/src/app/demo-components/sidebar/sidebar-demo.ts +27 -0
  69. package/src/app/demo-components/sidebar/sidebar.html +15 -0
  70. package/src/app/demo-components/sidebar/sidebar.scss +25 -0
  71. package/src/app/demo-components/sidebar/sidebar.ts +87 -0
  72. package/src/app/demo-components/slide-toggle/slide-toggle-demo.html +110 -0
  73. package/src/app/demo-components/slide-toggle/slide-toggle-demo.scss +45 -0
  74. package/src/app/demo-components/slide-toggle/slide-toggle-demo.ts +39 -0
  75. package/src/app/demo-components/stepper/stepper-demo.html +99 -0
  76. package/src/app/demo-components/stepper/stepper-demo.ts +84 -0
  77. package/src/app/demo-components/tables/clean_tables_scss.py +16 -0
  78. package/src/app/demo-components/tables/tables-demo.html +64 -0
  79. package/src/app/demo-components/tables/tables-demo.scss +18 -0
  80. package/src/app/demo-components/tables/tables-demo.ts +89 -0
  81. package/src/app/demo-components/tabs/tabs-demo.html +168 -0
  82. package/src/app/demo-components/tabs/tabs-demo.scss +22 -0
  83. package/src/app/demo-components/tabs/tabs-demo.ts +76 -0
  84. package/src/app/demo-components/toolbars/toolbars-demo.html +50 -0
  85. package/src/app/demo-components/toolbars/toolbars-demo.scss +29 -0
  86. package/src/app/demo-components/toolbars/toolbars-demo.ts +25 -0
  87. package/src/app/demo-components/tooltip/tooltip-demo.html +80 -0
  88. package/src/app/demo-components/tooltip/tooltip-demo.scss +30 -0
  89. package/src/app/demo-components/tooltip/tooltip-demo.ts +27 -0
  90. package/src/app/demo-components/typography/typography-demo.html +23 -0
  91. package/src/app/demo-components/typography/typography-demo.scss +49 -0
  92. package/src/app/demo-components/typography/typography-demo.ts +72 -0
  93. package/src/app/demo-components/workflow-graph/workflow-graph-demo.html +25 -0
  94. package/src/app/demo-components/workflow-graph/workflow-graph-demo.scss +48 -0
  95. package/src/app/demo-components/workflow-graph/workflow-graph-demo.ts +133 -0
  96. package/src/app/layout/layout.html +12 -0
  97. package/src/app/layout/layout.scss +21 -0
  98. package/src/app/layout/layout.ts +19 -0
  99. package/src/app/layout/side-menu/side-menu.html +32 -0
  100. package/src/app/layout/side-menu/side-menu.scss +52 -0
  101. package/src/app/layout/side-menu/side-menu.ts +70 -0
  102. package/src/app/layout/top-action-bar/top-action-bar.html +41 -0
  103. package/src/app/layout/top-action-bar/top-action-bar.scss +98 -0
  104. package/src/app/layout/top-action-bar/top-action-bar.ts +68 -0
  105. package/src/app/page-templates/complex-form/complex-form.html +103 -0
  106. package/src/app/page-templates/complex-form/complex-form.scss +110 -0
  107. package/src/app/page-templates/complex-form/complex-form.ts +66 -0
  108. package/src/app/page-templates/firewall-add/firewall-add.html +78 -0
  109. package/src/app/page-templates/firewall-add/firewall-add.scss +1 -0
  110. package/src/app/page-templates/firewall-add/firewall-add.ts +94 -0
  111. package/src/app/page-templates/firewall-details/firewall-details.html +115 -0
  112. package/src/app/page-templates/firewall-details/firewall-details.scss +21 -0
  113. package/src/app/page-templates/firewall-details/firewall-details.ts +91 -0
  114. package/src/app/page-templates/firewall-list/firewall-list.html +99 -0
  115. package/src/app/page-templates/firewall-list/firewall-list.scss +21 -0
  116. package/src/app/page-templates/firewall-list/firewall-list.ts +85 -0
  117. package/src/app/page-templates/firewall.service.ts +84 -0
  118. package/src/app/services/project.service.ts +24 -0
  119. package/src/index.html +17 -0
  120. package/src/main.ts +6 -0
  121. package/src/styles.scss +739 -0
  122. package/start_server.sh +4 -0
  123. package/tsconfig.app.json +15 -0
  124. package/tsconfig.json +33 -0
  125. package/tsconfig.spec.json +15 -0
@@ -0,0 +1,739 @@
1
+ // Include theming for Angular Material with `mat.theme()`.
2
+ // This Sass mixin will define CSS variables that are used for styling Angular Material
3
+ // components according to the Material 3 design spec.
4
+ // Learn more about theming and how to use it for your application's
5
+ // custom components at https://material.angular.dev/guide/theming
6
+ @use '@angular/material' as mat;
7
+ @use './variables' as *;
8
+
9
+ html {
10
+ height: 100%;
11
+
12
+ // Include core styles for Angular Material
13
+ @include mat.core();
14
+
15
+ // Apply the custom M3 theme
16
+ @include mat.all-component-themes($my-theme);
17
+
18
+ // Global Mat Icon Button Size Override using Angular Material Override System
19
+ @include mat.icon-button-overrides(
20
+ (
21
+ 'icon-size': 18px,
22
+ )
23
+ );
24
+
25
+ // Global Table Styling Overrides
26
+ }
27
+
28
+ body {
29
+ color-scheme: light;
30
+ margin: 0;
31
+ height: 100%;
32
+
33
+ // Custom Body Styles
34
+ color: #202124;
35
+ font-weight: var(--cm-sys-type-body-medium-font-weight);
36
+ font-size: var(--cm-sys-type-body-medium-font-size);
37
+ line-height: var(--cm-sys-type-body-medium-line-height);
38
+ font-family: var(--cm-sys-type-body-medium-font-family);
39
+ letter-spacing: normal;
40
+ line-height: 16px;
41
+ }
42
+
43
+ p {
44
+ margin-bottom: 16px;
45
+ margin-top: 0;
46
+ color: #202124;
47
+ font-weight: var(--cm-sys-type-body-medium-font-weight);
48
+ font-size: var(--cm-sys-type-body-medium-font-size);
49
+ line-height: var(--cm-sys-type-body-medium-line-height);
50
+ font-family: var(--cm-sys-type-body-medium-font-family);
51
+ }
52
+
53
+ *,
54
+ *::before,
55
+ *::after {
56
+ box-sizing: border-box;
57
+ }
58
+
59
+ .btn-small.mat-mdc-button-base {
60
+ height: 28px !important;
61
+ --mat-button-container-height: 28px !important;
62
+ padding-left: 8px !important;
63
+ padding-right: 8px !important;
64
+ }
65
+
66
+ mat-toolbar {
67
+ border-bottom: 1px solid #e8eaed;
68
+
69
+ // Title spacing
70
+ > span:first-child {
71
+ margin: 0 48px 0 0px;
72
+ }
73
+ }
74
+
75
+ /* Pagination Overrides - Global */
76
+ .mat-mdc-paginator {
77
+ .mdc-notched-outline {
78
+ display: none !important; /* Remove Select border outline */
79
+ }
80
+
81
+ .mat-mdc-form-field-flex {
82
+ background: transparent !important; /* Remove default background fill */
83
+ padding: 0 !important; /* Remove container padding overlap */
84
+ }
85
+
86
+ .mat-mdc-select-value {
87
+ font-size: 13px !important; /* Align height matching rest sets */
88
+ }
89
+ }
90
+
91
+
92
+ :root {
93
+ // --- Typography Reference Variables ---
94
+ --cm-ref-type-family-display: Google Sans, sans-serif;
95
+ --cm-ref-type-family-body: Roboto, sans-serif;
96
+ --cm-ref-type-family-code: Roboto Mono, monospace;
97
+ --cm-ref-type-weight-bold: 700;
98
+ --cm-ref-type-weight-medium: 500;
99
+ --cm-ref-type-weight-regular: 400;
100
+ --cm-ref-type-size-11: 11px;
101
+ --cm-ref-type-size-12: 12px;
102
+ --cm-ref-type-size-14: 14px;
103
+ --cm-ref-type-size-16: 16px;
104
+ --cm-ref-type-size-18: 18px;
105
+ --cm-ref-type-size-20: 20px;
106
+ --cm-ref-type-size-22: 22px;
107
+ --cm-ref-type-size-24: 24px;
108
+ --cm-ref-type-size-28: 28px;
109
+ --cm-ref-type-size-32: 32px;
110
+ --cm-ref-type-size-36: 36px;
111
+ --cm-ref-type-size-44: 44px;
112
+ --cm-ref-type-size-56: 56px;
113
+ --cm-ref-type-line-height-16: 16px;
114
+ --cm-ref-type-line-height-20: 20px;
115
+ --cm-ref-type-line-height-24: 24px;
116
+ --cm-ref-type-line-height-28: 28px;
117
+ --cm-ref-type-line-height-32: 32px;
118
+ --cm-ref-type-line-height-36: 36px;
119
+ --cm-ref-type-line-height-40: 40px;
120
+ --cm-ref-type-line-height-44: 44px;
121
+ --cm-ref-type-line-height-52: 52px;
122
+ --cm-ref-type-line-height-64: 64px;
123
+
124
+ // --- Typography System Variables ---
125
+ --cm-sys-type-display-large: 400 3.5rem / 4rem Google Sans, sans-serif;
126
+ --cm-sys-type-display-large-font-family: var(--cm-ref-type-family-display);
127
+ --cm-sys-type-display-large-font-weight: var(--cm-ref-type-weight-regular);
128
+ --cm-sys-type-display-large-font-size: var(--cm-ref-type-size-56);
129
+ --cm-sys-type-display-large-line-height: var(--cm-ref-type-line-height-64);
130
+ --cm-sys-type-display-medium: 400 2.75rem / 3.25rem Google Sans, sans-serif;
131
+ --cm-sys-type-display-medium-font-family: var(--cm-ref-type-family-display);
132
+ --cm-sys-type-display-medium-font-weight: var(--cm-ref-type-weight-regular);
133
+ --cm-sys-type-display-medium-font-size: var(--cm-ref-type-size-44);
134
+ --cm-sys-type-display-medium-line-height: var(--cm-ref-type-line-height-52);
135
+ --cm-sys-type-display-small: 400 2.25rem / 2.75rem Google Sans, sans-serif;
136
+ --cm-sys-type-display-small-font-family: var(--cm-ref-type-family-display);
137
+ --cm-sys-type-display-small-font-weight: var(--cm-ref-type-weight-regular);
138
+ --cm-sys-type-display-small-font-size: var(--cm-ref-type-size-36);
139
+ --cm-sys-type-display-small-line-height: var(--cm-ref-type-line-height-44);
140
+ --cm-sys-type-headline-large: 400 2rem / 2.5rem Google Sans, sans-serif;
141
+ --cm-sys-type-headline-large-font-family: var(--cm-ref-type-family-display);
142
+ --cm-sys-type-headline-large-font-weight: var(--cm-ref-type-weight-regular);
143
+ --cm-sys-type-headline-large-font-size: var(--cm-ref-type-size-32);
144
+ --cm-sys-type-headline-large-line-height: var(--cm-ref-type-line-height-40);
145
+ --cm-sys-type-headline-medium: 400 1.75rem / 2.25rem Google Sans, sans-serif;
146
+ --cm-sys-type-headline-medium-font-family: var(--cm-ref-type-family-display);
147
+ --cm-sys-type-headline-medium-font-weight: var(--cm-ref-type-weight-regular);
148
+ --cm-sys-type-headline-medium-font-size: var(--cm-ref-type-size-28);
149
+ --cm-sys-type-headline-medium-line-height: var(--cm-ref-type-line-height-36);
150
+ --cm-sys-type-headline-small: 400 1.5rem / 2rem Google Sans, sans-serif;
151
+ --cm-sys-type-headline-small-font-family: var(--cm-ref-type-family-display);
152
+ --cm-sys-type-headline-small-font-weight: var(--cm-ref-type-weight-regular);
153
+ --cm-sys-type-headline-small-font-size: var(--cm-ref-type-size-24);
154
+ --cm-sys-type-headline-small-line-height: var(--cm-ref-type-line-height-32);
155
+ --cm-sys-type-title-large: 400 1.375rem / 1.75rem Google Sans, sans-serif;
156
+ --cm-sys-type-title-large-font-family: var(--cm-ref-type-family-display);
157
+ --cm-sys-type-title-large-font-weight: var(--cm-ref-type-weight-regular);
158
+ --cm-sys-type-title-large-font-size: var(--cm-ref-type-size-22);
159
+ --cm-sys-type-title-large-line-height: var(--cm-ref-type-line-height-28);
160
+ --cm-sys-type-title-medium: 400 1.25rem / 1.5rem Google Sans, sans-serif;
161
+ --cm-sys-type-title-medium-font-family: var(--cm-ref-type-family-display);
162
+ --cm-sys-type-title-medium-font-weight: var(--cm-ref-type-weight-regular);
163
+ --cm-sys-type-title-medium-font-size: var(--cm-ref-type-size-20);
164
+ --cm-sys-type-title-medium-line-height: var(--cm-ref-type-line-height-24);
165
+ --cm-sys-type-title-small: 400 1.125rem / 1.5rem Google Sans, sans-serif;
166
+ --cm-sys-type-title-small-font-family: var(--cm-ref-type-family-display);
167
+ --cm-sys-type-title-small-font-weight: var(--cm-ref-type-weight-regular);
168
+ --cm-sys-type-title-small-font-size: var(--cm-ref-type-size-18);
169
+ --cm-sys-type-title-small-line-height: var(--cm-ref-type-line-height-24);
170
+ --cm-sys-type-label-large: 500 1rem / 1.5rem Google Sans, sans-serif;
171
+ --cm-sys-type-label-large-font-family: var(--cm-ref-type-family-display);
172
+ --cm-sys-type-label-large-font-weight: var(--cm-ref-type-weight-medium);
173
+ --cm-sys-type-label-large-font-size: var(--cm-ref-type-size-16);
174
+ --cm-sys-type-label-large-line-height: var(--cm-ref-type-line-height-24);
175
+ --cm-sys-type-label-medium: 500 0.875rem / 1.25rem Google Sans, sans-serif;
176
+ --cm-sys-type-label-medium-font-family: var(--cm-ref-type-family-display);
177
+ --cm-sys-type-label-medium-font-weight: var(--cm-ref-type-weight-medium);
178
+ --cm-sys-type-label-medium-font-size: var(--cm-ref-type-size-14);
179
+ --cm-sys-type-label-medium-line-height: var(--cm-ref-type-line-height-20);
180
+ --cm-sys-type-label-small: 500 0.75rem / 1rem Google Sans, sans-serif;
181
+ --cm-sys-type-label-small-font-family: var(--cm-ref-type-family-display);
182
+ --cm-sys-type-label-small-font-weight: var(--cm-ref-type-weight-medium);
183
+ --cm-sys-type-label-small-font-size: var(--cm-ref-type-size-12);
184
+ --cm-sys-type-label-small-line-height: var(--cm-ref-type-line-height-16);
185
+ --cm-sys-type-body-large: 400 1rem / 1.5rem Roboto, sans-serif;
186
+ --cm-sys-type-body-large-font-family: var(--cm-ref-type-family-body);
187
+ --cm-sys-type-body-large-font-weight: var(--cm-ref-type-weight-regular);
188
+ --cm-sys-type-body-large-font-size: var(--cm-ref-type-size-16);
189
+ --cm-sys-type-body-large-line-height: var(--cm-ref-type-line-height-24);
190
+ --cm-sys-type-body-medium: 400 0.875rem / 1.25rem Roboto, sans-serif;
191
+ --cm-sys-type-body-medium-font-family: var(--cm-ref-type-family-body);
192
+ --cm-sys-type-body-medium-font-weight: var(--cm-ref-type-weight-regular);
193
+ --cm-sys-type-body-medium-font-size: var(--cm-ref-type-size-14);
194
+ --cm-sys-type-body-medium-line-height: var(--cm-ref-type-line-height-20);
195
+ --cm-sys-type-body-small: 400 0.75rem / 1rem Roboto, sans-serif;
196
+ --cm-sys-type-body-small-font-family: var(--cm-ref-type-family-body);
197
+ --cm-sys-type-body-small-font-weight: var(--cm-ref-type-weight-regular);
198
+ --cm-sys-type-body-small-font-size: var(--cm-ref-type-size-12);
199
+ --cm-sys-type-body-small-line-height: var(--cm-ref-type-line-height-16);
200
+ --cm-sys-type-code: 400 0.75rem / 1rem Roboto Mono, monospace;
201
+ --cm-sys-type-code-font-family: var(--cm-ref-type-family-code);
202
+ --cm-sys-type-code-font-weight: var(--cm-ref-type-weight-regular);
203
+ --cm-sys-type-code-font-size: var(--cm-ref-type-size-12);
204
+ --cm-sys-type-code-line-height: var(--cm-ref-type-line-height-16);
205
+
206
+ // --- Typography Utility Classes ---
207
+ .cm-t-display-large {
208
+ font: var(--cm-sys-type-display-large);
209
+ }
210
+ .cm-t-display-medium {
211
+ font: var(--cm-sys-type-display-medium);
212
+ }
213
+ .cm-t-display-small {
214
+ font: var(--cm-sys-type-display-small);
215
+ }
216
+ .cm-t-headline-large {
217
+ font: var(--cm-sys-type-headline-large);
218
+ }
219
+ .cm-t-headline-medium {
220
+ font: var(--cm-sys-type-headline-medium);
221
+ }
222
+ .cm-t-headline-small {
223
+ font: var(--cm-sys-type-headline-small);
224
+ }
225
+ .cm-t-title-large {
226
+ font: var(--cm-sys-type-title-large);
227
+ }
228
+ .cm-t-title-medium {
229
+ font: var(--cm-sys-type-title-medium);
230
+ }
231
+ .cm-t-title-small {
232
+ font: var(--cm-sys-type-title-small);
233
+ }
234
+ .cm-t-label-large {
235
+ font: var(--cm-sys-type-label-large);
236
+ }
237
+ .cm-t-label-medium {
238
+ font: var(--cm-sys-type-label-medium);
239
+ }
240
+ .cm-t-label-small {
241
+ font: var(--cm-sys-type-label-small);
242
+ }
243
+ .cm-t-body-large {
244
+ font: var(--cm-sys-type-body-large);
245
+ }
246
+ .cm-t-body-medium {
247
+ font: var(--cm-sys-type-body-medium);
248
+ }
249
+ .cm-t-body-small {
250
+ font: var(--cm-sys-type-body-small);
251
+ }
252
+ .cm-t-code {
253
+ font: var(--cm-sys-type-code);
254
+ }
255
+
256
+ .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label {
257
+ top: calc(22px / 2) !important;
258
+ }
259
+ @include mat.select-overrides(
260
+ (
261
+ panel-background-color: #fff,
262
+ trigger-text-size: 14px,
263
+ )
264
+ );
265
+ @include mat.stepper-overrides(
266
+ (
267
+ header-height: 44px,
268
+ header-label-text-size: 20px,
269
+ header-selected-state-label-text-size: 20px,
270
+ header-label-text-weight: 400,
271
+ header-selected-state-label-text-weight: 400,
272
+ )
273
+ );
274
+
275
+ @include mat.datepicker-overrides(
276
+ (
277
+ calendar-container-background-color: #fff,
278
+ calendar-container-elevation-shadow: 0 0 0 1px #dadce0,
279
+ calendar-container-shape: 0px,
280
+ )
281
+ );
282
+
283
+ @include mat.list-overrides(
284
+ (
285
+ list-item-leading-icon-size: 18px,
286
+ list-item-label-text-size: 0.875rem,
287
+ list-item-leading-icon-start-space: 8px,
288
+ )
289
+ );
290
+ @include mat.toolbar-overrides(
291
+ (
292
+ standard-height: 50px,
293
+ container-background-color: #fff,
294
+ title-text-size: 18px,
295
+ )
296
+ );
297
+ @include mat.sidenav-overrides(
298
+ (
299
+ content-background-color: #fff,
300
+ container-shape: 0px,
301
+ )
302
+ );
303
+ @include mat.button-overrides(
304
+ (
305
+ filled-container-shape: 4px,
306
+ filled-container-height: 32px,
307
+ filled-horizontal-padding: 12px,
308
+ filled-icon-offset: 0px,
309
+ filled-label-text-font: (
310
+ '"Google Sans"',
311
+ Roboto,
312
+ Arial,
313
+ sans-serif,
314
+ ),
315
+ filled-label-text-size: 0.875rem,
316
+ filled-label-text-tracking: 0.0107143em,
317
+ filled-label-text-weight: 500,
318
+
319
+ outlined-container-shape: 4px,
320
+ outlined-container-height: 32px,
321
+ outlined-horizontal-padding: 12px,
322
+ outlined-outline-color: #dadce0,
323
+ /* Change edge from blue to grey default */ outlined-icon-offset: 0px,
324
+ outlined-label-text-font: (
325
+ '"Google Sans"',
326
+ Roboto,
327
+ Arial,
328
+ sans-serif,
329
+ ),
330
+ outlined-label-text-size: 0.875rem,
331
+ outlined-label-text-tracking: 0.0107143em,
332
+ outlined-label-text-weight: 500,
333
+ outlined-label-text-color: #5f6368,
334
+
335
+ text-container-shape: 4px,
336
+ text-container-height: 32px,
337
+ text-horizontal-padding: 12px,
338
+ text-with-icon-horizontal-padding: 12px,
339
+ text-icon-offset: 0px,
340
+ text-label-text-font: (
341
+ '"Google Sans"',
342
+ Roboto,
343
+ Arial,
344
+ sans-serif,
345
+ ),
346
+ text-label-text-size: 0.875rem,
347
+ text-label-text-tracking: 0.0107143em,
348
+ text-label-text-weight: 500,
349
+ text-label-text-color: #5f6368,
350
+ )
351
+ );
352
+
353
+ @include mat.expansion-overrides(
354
+ (
355
+ container-elevation-shadow: none,
356
+ header-text-weight: 400,
357
+ )
358
+ );
359
+
360
+ @include mat.dialog-overrides(
361
+ (
362
+ container-shape: 8px,
363
+ subhead-weight: 400,
364
+ subhead-size: 20px,
365
+ )
366
+ );
367
+
368
+ @include mat.card-overrides(
369
+ (
370
+ elevated-container-elevation: 0 0 0 1px #dadce0,
371
+ elevated-container-shape: 8px,
372
+ outlined-container-shape: 8px,
373
+ outlined-outline-color: #000,
374
+ outlined-outline-width: 1px,
375
+ title-text-size: 20px,
376
+ subtitle-text-size: 14px,
377
+ subtitle-text-weight: 500,
378
+ subtitle-text-color: rgba(0, 0, 0, 0.54),
379
+ )
380
+ );
381
+ @include mat.table-overrides(
382
+ (
383
+ background-color: #fff,
384
+ header-container-height: 32px,
385
+ row-item-container-height: 32px,
386
+ header-headline-color: #3c4043,
387
+ row-item-label-text-size: 14px,
388
+ row-item-outline-color: #dadce0,
389
+ row-item-label-text-color: #3c4043,
390
+ )
391
+ );
392
+
393
+ @include mat.form-field-overrides(
394
+ (
395
+ /* Filled Color Tokens */ 'filled-caret-color': $blue600,
396
+ 'filled-focus-label-text-color': $blue600,
397
+ 'filled-focus-active-indicator-color': #185abc,
398
+ 'filled-active-indicator-color': #5f6368,
399
+ 'filled-container-color': #f1f3f4,
400
+ 'filled-disabled-active-indicator-color': rgba(95, 99, 104, 0.38),
401
+ 'filled-disabled-container-color': rgba(95, 99, 104, 0.04),
402
+ 'filled-disabled-input-text-color': rgba(60, 64, 67, 0.38),
403
+ 'filled-disabled-label-text-color': rgba(95, 99, 104, 0.38),
404
+ 'filled-error-active-indicator-color': #c5221f,
405
+ 'filled-error-caret-color': #c5221f,
406
+ 'filled-error-focus-active-indicator-color': #c5221f,
407
+ 'filled-error-hover-active-indicator-color': #a50e0e,
408
+ 'filled-error-hover-label-text-color': #a50e0e,
409
+ 'filled-error-label-text-color': #c5221f,
410
+ 'filled-hover-active-indicator-color': #202124,
411
+ 'filled-hover-label-text-color': #202124,
412
+ 'filled-input-text-color': #3c4043,
413
+ 'filled-input-text-placeholder-color': #5f6368,
414
+ 'filled-label-text-color': #5f6368,
415
+
416
+ /* Outlined Color Tokens */ 'outlined-caret-color': $blue600,
417
+ 'outlined-focus-label-text-color': $blue600,
418
+ 'outlined-focus-outline-color': $blue600,
419
+ 'outlined-disabled-input-text-color': rgba(60, 64, 67, 0.38),
420
+ 'outlined-disabled-label-text-color': rgba(95, 99, 104, 0.38),
421
+ 'outlined-disabled-outline-color': rgba(60, 64, 67, 0.12),
422
+ 'outlined-error-caret-color': #d93025,
423
+ 'outlined-error-focus-outline-color': #d93025,
424
+ 'outlined-error-hover-label-text-color': #a50e0e,
425
+ 'outlined-error-hover-outline-color': #a50e0e,
426
+ 'outlined-error-label-text-color': #d93025,
427
+ 'outlined-error-outline-color': #d93025,
428
+ 'outlined-hover-label-text-color': #202124,
429
+ 'outlined-hover-outline-color': #202124,
430
+ 'outlined-input-text-color': #3c4043,
431
+ 'outlined-input-text-placeholder-color': #5f6368,
432
+ 'outlined-label-text-color': #5f6368,
433
+ 'outlined-outline-color': #80868b,
434
+
435
+ /* General/Disabled Inputs */ 'disabled-input-text-placeholder-color': rgba(60, 64, 67, 0.38),
436
+ /* Typography */ 'container-text-font': (Roboto, Arial, sans-serif),
437
+ 'container-text-line-height': 36px,
438
+ 'container-text-size': 0.875rem,
439
+ 'outlined-label-text-size': 0.875rem,
440
+ 'container-vertical-padding': 0px,
441
+ 'container-text-weight': 400,
442
+ container-height: 36px,
443
+ 'container-text-tracking': 0.00625em
444
+ )
445
+ );
446
+
447
+ @include mat.tabs-overrides(
448
+ (
449
+ active-indicator-color: $blue600,
450
+ active-label-text-color: $blue600,
451
+ active-focus-indicator-color: $blue600,
452
+ active-hover-indicator-color: $blue600,
453
+ active-focus-label-text-color: $blue600,
454
+ active-hover-label-text-color: $blue600,
455
+ inactive-label-text-color: $grey700,
456
+ inactive-focus-label-text-color: $grey700,
457
+ inactive-hover-label-text-color: $grey700,
458
+ container-height: 36px,
459
+ )
460
+ );
461
+
462
+ /* Explicit Primary Button overrides */
463
+ .mat-mdc-button.mat-primary {
464
+ color: $blue600 !important;
465
+ }
466
+ .mat-mdc-outlined-button.mat-primary {
467
+ color: $blue600 !important;
468
+ border-color: $blue600 !important; /* Forces primary blue border frame */
469
+ }
470
+ .mat-mdc-flat-button.mat-primary,
471
+ .mat-mdc-raised-button.mat-primary,
472
+ .mat-mdc-unelevated-button.mat-primary {
473
+ background-color: $blue600 !important;
474
+ color: #fff !important; /* Continuous contrast setups */
475
+ }
476
+
477
+ mat-form-field {
478
+ .mat-icon {
479
+ height: 18px;
480
+ width: 18px;
481
+ font-size: 18px;
482
+ padding: 0;
483
+ }
484
+ .mat-mdc-form-field-icon-prefix,
485
+ [dir='rtl'] .mat-mdc-form-field-icon-suffix,
486
+ .mat-mdc-form-field-icon-suffix,
487
+ [dir='rtl'] .mat-mdc-form-field-icon-prefix {
488
+ padding: 0 8px;
489
+ }
490
+ }
491
+ .mat-mdc-table {
492
+ @include mat.checkbox-overrides(
493
+ (
494
+ touch-target-size: 18px,
495
+ state-layer-size: 18px,
496
+ )
497
+ );
498
+ .mat-column-select {
499
+ width: 50px;
500
+ text-align: center;
501
+ }
502
+ a {
503
+ color: var(--mat-sys-primary, #1a73e8);
504
+ text-decoration: underline;
505
+ cursor: pointer;
506
+ font-weight: 400;
507
+ }
508
+ }
509
+
510
+ .mat-mdc-option {
511
+ max-height: 32px;
512
+ height: 32px;
513
+ line-height: 32px;
514
+ }
515
+
516
+ .mat-mdc-option:focus.mdc-list-item,
517
+ .mat-mdc-option.mat-mdc-option-active.mdc-list-item {
518
+ background-color: $blue50;
519
+
520
+ .mdc-list-item__primary-text {
521
+ color: $blue900;
522
+ }
523
+ }
524
+
525
+ .mat-mdc-option .mdc-list-item__primary-text {
526
+ font-size: 14px;
527
+ }
528
+
529
+ .details-table {
530
+ display: flex;
531
+ flex-direction: column;
532
+ border-top: 1px solid $grey100;
533
+ margin-top: 16px;
534
+ margin-bottom: 24px;
535
+ }
536
+
537
+ .table-row {
538
+ display: grid;
539
+ grid-template-columns: 200px 1fr;
540
+ border-bottom: 1px solid $grey100;
541
+ align-items: center;
542
+ min-height: 30px;
543
+
544
+ &:hover {
545
+ background-color: $grey50;
546
+ }
547
+ }
548
+
549
+ .table-label {
550
+ font-size: 14px;
551
+ color: $grey800;
552
+ font-weight: 500;
553
+ }
554
+
555
+ .table-value {
556
+ font-size: 14px;
557
+ color: $grey900;
558
+ }
559
+
560
+ .form-container {
561
+ max-width: 600px;
562
+ margin-top: 16px;
563
+ display: flex;
564
+ flex-direction: column;
565
+ gap: 16px;
566
+
567
+ .row {
568
+ display: flex;
569
+ gap: 16px;
570
+
571
+ mat-form-field {
572
+ flex: 1;
573
+ }
574
+ }
575
+
576
+ .actions {
577
+ display: flex;
578
+ gap: 12px;
579
+ margin-top: 24px;
580
+ justify-content: flex-start; // Align left
581
+ }
582
+ }
583
+
584
+ /* --- Global Table & Filter Layout Support --- */
585
+ .filter-container {
586
+ display: flex;
587
+ align-items: center;
588
+ gap: 12px;
589
+ padding: 12px 16px;
590
+ border-bottom: 1px solid #e8eaed;
591
+ border-top: 1px solid #e8eaed;
592
+ width: 100%;
593
+ background-color: #ffffff;
594
+ box-sizing: border-box; /* Match edge renders */
595
+
596
+ mat-icon {
597
+ color: rgba(0, 0, 0, 0.54);
598
+ font-size: 18px;
599
+ width: 18px;
600
+ height: 18px;
601
+ }
602
+
603
+ .filter-title {
604
+ font-weight: 500;
605
+ font-size: 13px;
606
+ color: #3c4043;
607
+ }
608
+
609
+ .filter-input {
610
+ border: none;
611
+ outline: none;
612
+ flex: 1;
613
+ font-size: 13px;
614
+ color: #3c4043;
615
+ background: transparent;
616
+
617
+ &::placeholder {
618
+ color: #9aa0a6;
619
+ }
620
+ }
621
+ }
622
+
623
+ .table-container {
624
+ overflow: auto;
625
+ }
626
+
627
+ table {
628
+ width: 100%;
629
+ }
630
+
631
+ .mat-mdc-row:hover {
632
+ background-color: #f8f8f8;
633
+ }
634
+
635
+ .mat-mdc-row.selected {
636
+ background-color: #e8f0fe !important;
637
+ }
638
+
639
+ .mat-mdc-header-row {
640
+ background-color: #f1f3f4;
641
+ }
642
+
643
+ .mat-mdc-header-cell {
644
+ color: #3c4043;
645
+ font-weight: 500;
646
+ padding: 0 8px;
647
+ }
648
+
649
+ .mat-mdc-cell {
650
+ color: #3c4043;
651
+ padding: 0 8px;
652
+ }
653
+
654
+ mat-toolbar {
655
+ .mat-icon {
656
+ line-height: 20px;
657
+ }
658
+ }
659
+ // --- Global Heading Typography Styles ---
660
+ h1,
661
+ h2,
662
+ h3,
663
+ h4 {
664
+ color: $grey900;
665
+ font-weight: var(--cm-ref-type-weight-regular);
666
+ font-family: var(--cm-ref-type-family-display);
667
+ }
668
+
669
+ h1 {
670
+ font-size: var(--cm-sys-type-title-large-font-size);
671
+ }
672
+ h2 {
673
+ font-size: var(--cm-sys-type-title-medium-font-size);
674
+ }
675
+ h3 {
676
+ font-size: var(--cm-sys-type-title-small-font-size);
677
+ }
678
+ h4 {
679
+ font-size: var(--cm-sys-type-body-large-font-size);
680
+ }
681
+
682
+ .default-container-padding {
683
+ padding: 24px;
684
+ }
685
+
686
+ .mdc-switch__track {
687
+ height: 15px;
688
+
689
+ &:after {
690
+ background-color: $blue300;
691
+ }
692
+ }
693
+
694
+ .mdc-switch--selected .mdc-switch__track::before, .mdc-switch--selected .mdc-switch__track::after {
695
+ border-color: $blue500;
696
+ border-width: 1px;
697
+ }
698
+
699
+ .mdc-switch--selected:enabled .mdc-switch__handle::after {
700
+ background-color: $blue500;
701
+ }
702
+
703
+ .mdc-switch--selected .mdc-switch__icon {
704
+ fill: #fff;
705
+ }
706
+
707
+ .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons) {
708
+ margin: 0;
709
+ }
710
+
711
+ .mdc-switch {
712
+ width: 40px;
713
+ }
714
+
715
+ .mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons) {
716
+ margin: 0 18px;
717
+ }
718
+
719
+ .code-block {
720
+ width: 100%;
721
+ max-width: 800px;
722
+ background-color: $grey100; // Light gray background
723
+ color: $grey900; // Dark text
724
+ padding: 16px;
725
+ border-radius: 8px;
726
+ font-family: 'Roboto Mono', monospace;
727
+ font-size: 14px;
728
+ line-height: 1.5;
729
+ overflow-x: auto;
730
+ border: 1px solid $grey300;
731
+ margin: 0;
732
+
733
+ code {
734
+ white-space: pre-wrap;
735
+ }
736
+ }
737
+ }
738
+
739
+