@acontplus/ng-components 1.0.7 → 1.0.9

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/index.d.ts CHANGED
@@ -553,8 +553,6 @@ declare class SpinnerComponent {
553
553
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "acp-spinner", never, {}, {}, never, never, true, never>;
554
554
  }
555
555
 
556
- type SnackbarType = 'success' | 'warning' | 'info' | 'error';
557
-
558
556
  interface TabulatorColumn {
559
557
  title: string;
560
558
  field: string;
@@ -583,7 +581,7 @@ interface TabulatorColumn {
583
581
  clipboard?: boolean;
584
582
  }
585
583
  interface TabulatorTheme {
586
- name: 'default' | 'bootstrap5' | 'semantic-ui';
584
+ name: 'default' | 'modern' | 'midnight' | 'simple' | 'site' | 'site-dark';
587
585
  cssPath?: string;
588
586
  }
589
587
  interface TabulatorConfig {
@@ -656,6 +654,7 @@ declare class CustomTabulatorComponent implements OnChanges, AfterViewInit, OnDe
656
654
  placeholder: string;
657
655
  autoResize: boolean;
658
656
  theme: TabulatorTheme;
657
+ customClass: string;
659
658
  options: Record<string, any>;
660
659
  cellEdited: EventEmitter<any>;
661
660
  rowClick: EventEmitter<any>;
@@ -668,6 +667,7 @@ declare class CustomTabulatorComponent implements OnChanges, AfterViewInit, OnDe
668
667
  ngOnDestroy(): void;
669
668
  private initializeTable;
670
669
  private applyTheme;
670
+ private applyCustomClass;
671
671
  private registerEvents;
672
672
  private updateData;
673
673
  private updateColumns;
@@ -675,7 +675,7 @@ declare class CustomTabulatorComponent implements OnChanges, AfterViewInit, OnDe
675
675
  getInstance(): TabulatorFull;
676
676
  redraw(): void;
677
677
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CustomTabulatorComponent, never>;
678
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CustomTabulatorComponent, "acp-tabulator", never, { "data": { "alias": "data"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "height": { "alias": "height"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "dataTree": { "alias": "dataTree"; "required": false; }; "dataTreeChildField": { "alias": "dataTreeChildField"; "required": false; }; "dataTreeStartExpanded": { "alias": "dataTreeStartExpanded"; "required": false; }; "dataTreeSelectPropagate": { "alias": "dataTreeSelectPropagate"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "reactiveData": { "alias": "reactiveData"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autoResize": { "alias": "autoResize"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "cellEdited": "cellEdited"; "rowClick": "rowClick"; "rowSelected": "rowSelected"; "tableReady": "tableReady"; }, never, never, true, never>;
678
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CustomTabulatorComponent, "acp-tabulator", never, { "data": { "alias": "data"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "height": { "alias": "height"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "dataTree": { "alias": "dataTree"; "required": false; }; "dataTreeChildField": { "alias": "dataTreeChildField"; "required": false; }; "dataTreeStartExpanded": { "alias": "dataTreeStartExpanded"; "required": false; }; "dataTreeSelectPropagate": { "alias": "dataTreeSelectPropagate"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "reactiveData": { "alias": "reactiveData"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autoResize": { "alias": "autoResize"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "cellEdited": "cellEdited"; "rowClick": "rowClick"; "rowSelected": "rowSelected"; "tableReady": "tableReady"; }, never, never, true, never>;
679
679
  }
680
680
 
681
681
  interface DateRangeConfig<T = any> {
@@ -990,4 +990,4 @@ declare class StatusDisplayPipe implements PipeTransform {
990
990
  }
991
991
 
992
992
  export { AUTOCOMPLETE_WRAPPER_CUSTOMER_CONFIG, AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, AUTOCOMPLETE_WRAPPER_LOCAL_CONFIG, AUTOCOMPLETE_WRAPPER_PAGINATED_CONFIG, AUTOCOMPLETE_WRAPPER_PRODUCT_CONFIG, AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG, ActiveRequestsTracker, AdvancedDialogService, AutocompleteWrapperService, ColumnDefinition, CustomTabulatorComponent, DYNAMIC_INPUT, DialogWrapperComponent, FieldDefinition, GetTotalPipe, IconUserComponent, MatDynamicCardComponent, MatDynamicTableComponent, MatInputChipComponent, MatThemeButtonComponent, OverlayService, Pagination, ReusableAutocompleteComponent, SpinnerComponent, StatusDisplayPipe, SvgIconComponent, TableCellIndex, ThemeService, ThemeToggleComponent, ToUpperCaseDirective, createAutocompleteWrapperConfig, spinnerInterceptor, withoutSpinner };
993
- export type { AutocompleteWrapperActions, AutocompleteWrapperConfig, AutocompleteWrapperEventHandler, AutocompleteWrapperEvents, AutocompleteWrapperFilters, AutocompleteWrapperItem, AutocompleteWrapperItemProperty, AutocompleteWrapperPaginationInfo, AutocompleteWrapperSearchField, AutocompleteWrapperSearchFunction, AutocompleteWrapperSearchMode, AutocompleteWrapperSearchResult, AutocompleteWrapperState, AutocompleteWrapperStockOption, ButtonType, ButtonVariant, ColumnType, ControlType, DateRangeConfig, DialogSize, DialogWrapperConfig, FieldType, MatCustomDialogConfig, MaterialButtonStyle, OptionSearchConfig, ReusableAutocompleteWrapperComponent, SnackbarType, TableContext, TableRow, TabulatorColumn, TabulatorConfig, TabulatorEventHandlers, TabulatorTheme };
993
+ export type { AutocompleteWrapperActions, AutocompleteWrapperConfig, AutocompleteWrapperEventHandler, AutocompleteWrapperEvents, AutocompleteWrapperFilters, AutocompleteWrapperItem, AutocompleteWrapperItemProperty, AutocompleteWrapperPaginationInfo, AutocompleteWrapperSearchField, AutocompleteWrapperSearchFunction, AutocompleteWrapperSearchMode, AutocompleteWrapperSearchResult, AutocompleteWrapperState, AutocompleteWrapperStockOption, ButtonType, ButtonVariant, ColumnType, ControlType, DateRangeConfig, DialogSize, DialogWrapperConfig, FieldType, MatCustomDialogConfig, MaterialButtonStyle, OptionSearchConfig, ReusableAutocompleteWrapperComponent, TableContext, TableRow, TabulatorColumn, TabulatorConfig, TabulatorEventHandlers, TabulatorTheme };
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@acontplus/ng-components",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Angular Material UI component library with dynamic tables, theming support, dialog wrappers, and comprehensive styling utilities",
5
+ "dependencies": {
6
+ "tabulator-tables": "^6.3.1",
7
+ "tslib": "^2.3.0"
8
+ },
5
9
  "peerDependencies": {
6
- "@acontplus/ng-core": "^1.0.6",
7
10
  "@angular/cdk": "^20.2.4",
8
11
  "@angular/common": "^20.3.1",
9
12
  "@angular/core": "^20.3.1",
10
- "@angular/material": "^20.2.4",
11
- "tabulator-tables": "^6.3.1"
13
+ "@angular/material": "^20.2.4"
12
14
  },
13
- "sideEffects": false,
15
+ "sideEffects": true,
14
16
  "main": "fesm2022/acontplus-ng-components.mjs",
15
17
  "module": "fesm2022/acontplus-ng-components.mjs",
16
18
  "typings": "index.d.ts",
@@ -18,7 +20,8 @@
18
20
  "index.d.ts",
19
21
  "*.d.ts",
20
22
  "**/*.d.ts",
21
- "fesm2022/**/*"
23
+ "fesm2022/**/*",
24
+ "src/**/*"
22
25
  ],
23
26
  "engines": {
24
27
  "node": ">=18.0.0"
@@ -79,8 +82,5 @@
79
82
  "types": "./index.d.ts",
80
83
  "default": "./fesm2022/acontplus-ng-components.mjs"
81
84
  }
82
- },
83
- "dependencies": {
84
- "tslib": "^2.3.0"
85
85
  }
86
86
  }
@@ -0,0 +1,469 @@
1
+ // src/styles/_custom-buttons.scss
2
+
3
+ // This is the mixin that will generate all our button CSS.
4
+ // It accepts one argument: the application's theme object ($theme).
5
+ @mixin custom-button-theme($theme) {
6
+ // Bootstrap 5.3+ Color Palette (hardcoded)
7
+ $bootstrap-colors: (
8
+ primary: #0d6efd,
9
+ secondary: #6c757d,
10
+ success: #198754,
11
+ danger: #dc3545,
12
+ warning: #ffc107,
13
+ info: #0dcaf0,
14
+ light: #f8f9fa,
15
+ dark: #212529,
16
+ );
17
+
18
+ // Bootstrap contrast colors
19
+ $bootstrap-contrast: (
20
+ primary: #ffffff,
21
+ secondary: #ffffff,
22
+ success: #ffffff,
23
+ danger: #ffffff,
24
+ warning: #000000,
25
+ info: #000000,
26
+ light: #000000,
27
+ dark: #ffffff,
28
+ );
29
+
30
+ // Generate the global CSS variables (:root)
31
+ :root {
32
+ // Bootstrap colors
33
+ --primary-color: #{map-get($bootstrap-colors, primary)};
34
+ --on-primary-color: #{map-get($bootstrap-contrast, primary)};
35
+ --secondary-color: #{map-get($bootstrap-colors, secondary)};
36
+ --on-secondary-color: #{map-get($bootstrap-contrast, secondary)};
37
+ --success-color: #{map-get($bootstrap-colors, success)};
38
+ --on-success-color: #{map-get($bootstrap-contrast, success)};
39
+ --danger-color: #{map-get($bootstrap-colors, danger)};
40
+ --on-danger-color: #{map-get($bootstrap-contrast, danger)};
41
+ --warning-color: #{map-get($bootstrap-colors, warning)};
42
+ --on-warning-color: #{map-get($bootstrap-contrast, warning)};
43
+ --info-color: #{map-get($bootstrap-colors, info)};
44
+ --on-info-color: #{map-get($bootstrap-contrast, info)};
45
+ --light-color: #{map-get($bootstrap-colors, light)};
46
+ --on-light-color: #{map-get($bootstrap-contrast, light)};
47
+ --dark-color: #{map-get($bootstrap-colors, dark)};
48
+ --on-dark-color: #{map-get($bootstrap-contrast, dark)};
49
+
50
+ // Surface colors (from theme if available, fallback to defaults)
51
+ --surface-color: #ffffff;
52
+ --on-surface-color: #000000;
53
+
54
+ // Tertiary and error colors (Bootstrap-like alternatives)
55
+ --tertiary-color: #6f42c1; // Bootstrap purple
56
+ --on-tertiary-color: #ffffff;
57
+ --error-color: var(--danger-color);
58
+ --on-error-color: var(--on-danger-color);
59
+ }
60
+
61
+ // Button styles using Material Design tokens structure
62
+
63
+ /* Icon and text spacing */
64
+ .button-icon {
65
+ margin-inline-end: 8px;
66
+ }
67
+
68
+ /* Icon-only button needs no margin */
69
+ .mat-icon-button .button-icon,
70
+ .mat-fab .button-icon,
71
+ .mat-mini-fab .button-icon {
72
+ margin-inline-end: 0;
73
+ }
74
+
75
+ /* Custom border radius for buttons */
76
+ .mat-mdc-button,
77
+ .mat-mdc-icon-button,
78
+ .mat-mdc-unelevated-button,
79
+ .mat-mdc-outlined-button {
80
+ --mat-text-button-container-shape: 20px;
81
+ --mat-outlined-button-container-shape: 20px;
82
+ --mat-filled-button-container-shape: 20px;
83
+ --mat-protected-button-container-shape: 20px;
84
+ //margin: 0.25rem;
85
+ border-radius: 20px;
86
+
87
+ // Ensure consistent height
88
+ --mat-standard-button-container-height: 40px;
89
+ min-height: 40px;
90
+ }
91
+
92
+ /* Filled Button Variants using Bootstrap colors */
93
+ .btn-primary {
94
+ --mat-filled-button-container-color: var(--primary-color);
95
+ --mat-filled-button-label-text-color: var(--on-primary-color);
96
+ --mat-filled-button-hover-label-text-color: var(--on-primary-color);
97
+ --mat-filled-button-focus-label-text-color: var(--on-primary-color);
98
+ background-color: var(--primary-color) !important;
99
+ color: var(--on-primary-color) !important;
100
+
101
+ &:hover {
102
+ background-color: #0b5ed7 !important; // Bootstrap primary hover
103
+ }
104
+ }
105
+
106
+ .btn-secondary {
107
+ --mat-filled-button-container-color: var(--secondary-color);
108
+ --mat-filled-button-label-text-color: var(--on-secondary-color);
109
+ --mat-filled-button-hover-label-text-color: var(--on-secondary-color);
110
+ --mat-filled-button-focus-label-text-color: var(--on-secondary-color);
111
+ background-color: var(--secondary-color) !important;
112
+ color: var(--on-secondary-color) !important;
113
+
114
+ &:hover {
115
+ background-color: #5c636a !important; // Bootstrap secondary hover
116
+ }
117
+ }
118
+
119
+ .btn-success {
120
+ --mat-filled-button-container-color: var(--success-color);
121
+ --mat-filled-button-label-text-color: var(--on-success-color);
122
+ --mat-filled-button-hover-label-text-color: var(--on-success-color);
123
+ --mat-filled-button-focus-label-text-color: var(--on-success-color);
124
+ background-color: var(--success-color) !important;
125
+ color: var(--on-success-color) !important;
126
+
127
+ &:hover {
128
+ background-color: #157347 !important; // Bootstrap success hover
129
+ }
130
+ }
131
+
132
+ .btn-danger {
133
+ --mat-filled-button-container-color: var(--danger-color);
134
+ --mat-filled-button-label-text-color: var(--on-danger-color);
135
+ --mat-filled-button-hover-label-text-color: var(--on-danger-color);
136
+ --mat-filled-button-focus-label-text-color: var(--on-danger-color);
137
+ background-color: var(--danger-color) !important;
138
+ color: var(--on-danger-color) !important;
139
+
140
+ &:hover {
141
+ background-color: #bb2d3b !important; // Bootstrap danger hover
142
+ }
143
+ }
144
+
145
+ .btn-warning {
146
+ --mat-filled-button-container-color: var(--warning-color);
147
+ --mat-filled-button-label-text-color: var(--on-warning-color);
148
+ --mat-filled-button-hover-label-text-color: var(--on-warning-color);
149
+ --mat-filled-button-focus-label-text-color: var(--on-warning-color);
150
+ background-color: var(--warning-color) !important;
151
+ color: var(--on-warning-color) !important;
152
+
153
+ &:hover {
154
+ background-color: #ffca2c !important; // Bootstrap warning hover
155
+ }
156
+ }
157
+
158
+ .btn-info {
159
+ --mat-filled-button-container-color: var(--info-color);
160
+ --mat-filled-button-label-text-color: var(--on-info-color);
161
+ --mat-filled-button-hover-label-text-color: var(--on-info-color);
162
+ --mat-filled-button-focus-label-text-color: var(--on-info-color);
163
+ background-color: var(--info-color) !important;
164
+ color: var(--on-info-color) !important;
165
+
166
+ &:hover {
167
+ background-color: #31d2f2 !important; // Bootstrap info hover
168
+ }
169
+ }
170
+
171
+ .btn-light {
172
+ --mat-filled-button-container-color: var(--light-color);
173
+ --mat-filled-button-label-text-color: var(--on-light-color);
174
+ --mat-filled-button-hover-label-text-color: var(--on-light-color);
175
+ --mat-filled-button-focus-label-text-color: var(--on-light-color);
176
+ background-color: var(--light-color) !important;
177
+ color: var(--on-light-color) !important;
178
+ border: 1px solid #dee2e6 !important;
179
+
180
+ &:hover {
181
+ background-color: #e9ecef !important; // Bootstrap light hover
182
+ }
183
+ }
184
+
185
+ .btn-dark {
186
+ --mat-filled-button-container-color: var(--dark-color);
187
+ --mat-filled-button-label-text-color: var(--on-dark-color);
188
+ --mat-filled-button-hover-label-text-color: var(--on-dark-color);
189
+ --mat-filled-button-focus-label-text-color: var(--on-dark-color);
190
+ background-color: var(--dark-color) !important;
191
+ color: var(--on-dark-color) !important;
192
+
193
+ &:hover {
194
+ background-color: #1c1f23 !important; // Bootstrap dark hover
195
+ }
196
+ }
197
+
198
+ /* Outlined Button Variants using Bootstrap colors */
199
+ .btn-outlined {
200
+ --mat-outlined-button-outline-color: currentColor;
201
+ --mat-outlined-button-container-color: transparent;
202
+ background-color: transparent !important;
203
+ border: 1px solid currentColor !important;
204
+ }
205
+
206
+ .btn-primary.btn-outlined,
207
+ .mat-mdc-outlined-button.btn-primary {
208
+ --mat-outlined-button-label-text-color: var(--primary-color);
209
+ --mat-outlined-button-outline-color: var(--primary-color);
210
+ --mat-outlined-button-hover-label-text-color: var(--on-primary-color);
211
+ --mat-outlined-button-focus-label-text-color: var(--on-primary-color);
212
+ color: var(--primary-color) !important;
213
+ border-color: var(--primary-color) !important;
214
+
215
+ &:hover {
216
+ background-color: var(--primary-color) !important;
217
+ color: var(--on-primary-color) !important;
218
+ }
219
+ }
220
+
221
+ .btn-secondary.btn-outlined,
222
+ .mat-mdc-outlined-button.btn-secondary {
223
+ --mat-outlined-button-label-text-color: var(--secondary-color);
224
+ --mat-outlined-button-outline-color: var(--secondary-color);
225
+ --mat-outlined-button-hover-label-text-color: var(--on-secondary-color);
226
+ --mat-outlined-button-focus-label-text-color: var(--on-secondary-color);
227
+ color: var(--secondary-color) !important;
228
+ border-color: var(--secondary-color) !important;
229
+
230
+ &:hover {
231
+ background-color: var(--secondary-color) !important;
232
+ color: var(--on-secondary-color) !important;
233
+ }
234
+ }
235
+
236
+ .btn-success.btn-outlined,
237
+ .mat-mdc-outlined-button.btn-success {
238
+ --mat-outlined-button-label-text-color: var(--success-color);
239
+ --mat-outlined-button-outline-color: var(--success-color);
240
+ --mat-outlined-button-hover-label-text-color: var(--on-success-color);
241
+ --mat-outlined-button-focus-label-text-color: var(--on-success-color);
242
+ color: var(--success-color) !important;
243
+ border-color: var(--success-color) !important;
244
+
245
+ &:hover {
246
+ background-color: var(--success-color) !important;
247
+ color: var(--on-success-color) !important;
248
+ }
249
+ }
250
+
251
+ .btn-danger.btn-outlined,
252
+ .mat-mdc-outlined-button.btn-danger {
253
+ --mat-outlined-button-label-text-color: var(--danger-color);
254
+ --mat-outlined-button-outline-color: var(--danger-color);
255
+ --mat-outlined-button-hover-label-text-color: var(--on-danger-color);
256
+ --mat-outlined-button-focus-label-text-color: var(--on-danger-color);
257
+ color: var(--danger-color) !important;
258
+ border-color: var(--danger-color) !important;
259
+
260
+ &:hover {
261
+ background-color: var(--danger-color) !important;
262
+ color: var(--on-danger-color) !important;
263
+ }
264
+ }
265
+
266
+ .btn-warning.btn-outlined,
267
+ .mat-mdc-outlined-button.btn-warning {
268
+ --mat-outlined-button-label-text-color: var(--warning-color);
269
+ --mat-outlined-button-outline-color: var(--warning-color);
270
+ --mat-outlined-button-hover-label-text-color: var(--on-warning-color);
271
+ --mat-outlined-button-focus-label-text-color: var(--on-warning-color);
272
+ color: var(--warning-color) !important;
273
+ border-color: var(--warning-color) !important;
274
+
275
+ &:hover {
276
+ background-color: var(--warning-color) !important;
277
+ color: var(--on-warning-color) !important;
278
+ }
279
+ }
280
+
281
+ .btn-info.btn-outlined,
282
+ .mat-mdc-outlined-button.btn-info {
283
+ --mat-outlined-button-label-text-color: var(--info-color);
284
+ --mat-outlined-button-outline-color: var(--info-color);
285
+ --mat-outlined-button-hover-label-text-color: var(--on-info-color);
286
+ --mat-outlined-button-focus-label-text-color: var(--on-info-color);
287
+ color: var(--info-color) !important;
288
+ border-color: var(--info-color) !important;
289
+
290
+ &:hover {
291
+ background-color: var(--info-color) !important;
292
+ color: var(--on-info-color) !important;
293
+ }
294
+ }
295
+
296
+ .btn-light.btn-outlined,
297
+ .mat-mdc-outlined-button.btn-light {
298
+ --mat-outlined-button-label-text-color: var(--light-color);
299
+ --mat-outlined-button-outline-color: var(--light-color);
300
+ --mat-outlined-button-hover-label-text-color: var(--on-light-color);
301
+ --mat-outlined-button-focus-label-text-color: var(--on-light-color);
302
+ color: var(--light-color) !important;
303
+ border-color: var(--light-color) !important;
304
+
305
+ &:hover {
306
+ background-color: var(--light-color) !important;
307
+ color: var(--on-light-color) !important;
308
+ }
309
+ }
310
+
311
+ .btn-dark.btn-outlined,
312
+ .mat-mdc-outlined-button.btn-dark {
313
+ --mat-outlined-button-label-text-color: var(--dark-color);
314
+ --mat-outlined-button-outline-color: var(--dark-color);
315
+ --mat-outlined-button-hover-label-text-color: var(--on-dark-color);
316
+ --mat-outlined-button-focus-label-text-color: var(--on-dark-color);
317
+ color: var(--dark-color) !important;
318
+ border-color: var(--dark-color) !important;
319
+
320
+ &:hover {
321
+ background-color: var(--dark-color) !important;
322
+ color: var(--on-dark-color) !important;
323
+ }
324
+ }
325
+
326
+ /* Text Button Variants */
327
+ .mat-mdc-button {
328
+ --mat-text-button-container-color: transparent;
329
+
330
+ &.btn-primary {
331
+ --mat-text-button-label-text-color: var(--primary-color);
332
+ --mat-text-button-hover-label-text-color: var(--primary-color);
333
+ --mat-text-button-focus-label-text-color: var(--primary-color);
334
+ color: var(--primary-color) !important;
335
+
336
+ &:hover {
337
+ background-color: rgba(13, 110, 253, 0.1) !important;
338
+ }
339
+ }
340
+
341
+ &.btn-secondary {
342
+ --mat-text-button-label-text-color: var(--secondary-color);
343
+ --mat-text-button-hover-label-text-color: var(--secondary-color);
344
+ --mat-text-button-focus-label-text-color: var(--secondary-color);
345
+ color: var(--secondary-color) !important;
346
+
347
+ &:hover {
348
+ background-color: rgba(108, 117, 125, 0.1) !important;
349
+ }
350
+ }
351
+
352
+ &.btn-success {
353
+ --mat-text-button-label-text-color: var(--success-color);
354
+ --mat-text-button-hover-label-text-color: var(--success-color);
355
+ --mat-text-button-focus-label-text-color: var(--success-color);
356
+ color: var(--success-color) !important;
357
+
358
+ &:hover {
359
+ background-color: rgba(25, 135, 84, 0.1) !important;
360
+ }
361
+ }
362
+
363
+ &.btn-danger {
364
+ --mat-text-button-label-text-color: var(--danger-color);
365
+ --mat-text-button-hover-label-text-color: var(--danger-color);
366
+ --mat-text-button-focus-label-text-color: var(--danger-color);
367
+ color: var(--danger-color) !important;
368
+
369
+ &:hover {
370
+ background-color: rgba(220, 53, 69, 0.1) !important;
371
+ }
372
+ }
373
+
374
+ &.btn-warning {
375
+ --mat-text-button-label-text-color: var(--warning-color);
376
+ --mat-text-button-hover-label-text-color: var(--warning-color);
377
+ --mat-text-button-focus-label-text-color: var(--warning-color);
378
+ color: var(--warning-color) !important;
379
+
380
+ &:hover {
381
+ background-color: rgba(255, 193, 7, 0.1) !important;
382
+ }
383
+ }
384
+
385
+ &.btn-info {
386
+ --mat-text-button-label-text-color: var(--info-color);
387
+ --mat-text-button-hover-label-text-color: var(--info-color);
388
+ --mat-text-button-focus-label-text-color: var(--info-color);
389
+ color: var(--info-color) !important;
390
+
391
+ &:hover {
392
+ background-color: rgba(13, 202, 240, 0.1) !important;
393
+ }
394
+ }
395
+
396
+ &.btn-light {
397
+ --mat-text-button-label-text-color: var(--light-color);
398
+ --mat-text-button-hover-label-text-color: var(--light-color);
399
+ --mat-text-button-focus-label-text-color: var(--light-color);
400
+ color: var(--light-color) !important;
401
+
402
+ &:hover {
403
+ background-color: rgba(248, 249, 250, 0.1) !important;
404
+ }
405
+ }
406
+
407
+ &.btn-dark {
408
+ --mat-text-button-label-text-color: var(--dark-color);
409
+ --mat-text-button-hover-label-text-color: var(--dark-color);
410
+ --mat-text-button-focus-label-text-color: var(--dark-color);
411
+ color: var(--dark-color) !important;
412
+
413
+ &:hover {
414
+ background-color: rgba(33, 37, 41, 0.1) !important;
415
+ }
416
+ }
417
+ }
418
+
419
+ /* Hover and Focus Effects */
420
+ .mat-mdc-button:not([disabled]),
421
+ .mat-mdc-unelevated-button:not([disabled]),
422
+ .mat-mdc-outlined-button:not([disabled]) {
423
+ --mat-text-button-hover-state-layer-opacity: 0.08;
424
+ --mat-filled-button-hover-state-layer-opacity: 0.08;
425
+ --mat-outlined-button-hover-state-layer-opacity: 0.08;
426
+ --mat-text-button-focus-state-layer-opacity: 0.12;
427
+ --mat-filled-button-focus-state-layer-opacity: 0.12;
428
+ --mat-outlined-button-focus-state-layer-opacity: 0.12;
429
+
430
+ transition: all 0.2s ease-in-out;
431
+ }
432
+
433
+ /* Disabled state styling */
434
+ .mat-mdc-button:disabled,
435
+ .mat-mdc-unelevated-button:disabled,
436
+ .mat-mdc-outlined-button:disabled {
437
+ --mat-text-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);
438
+ --mat-filled-button-disabled-container-color: rgba(0, 0, 0, 0.12);
439
+ --mat-filled-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);
440
+ --mat-outlined-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);
441
+ --mat-outlined-button-disabled-outline-color: rgba(0, 0, 0, 0.12);
442
+
443
+ opacity: 0.6;
444
+ cursor: not-allowed;
445
+ }
446
+
447
+ /* Ripple effect customization */
448
+ .mat-ripple-element {
449
+ background-color: rgba(255, 255, 255, 0.12);
450
+ }
451
+
452
+ /* High contrast mode support for accessibility */
453
+ @media (prefers-contrast: more) {
454
+ .mat-mdc-button,
455
+ .mat-mdc-unelevated-button,
456
+ .mat-mdc-outlined-button {
457
+ border: 2px solid currentColor;
458
+ }
459
+ }
460
+
461
+ /* Reduced motion support for accessibility */
462
+ @media (prefers-reduced-motion: reduce) {
463
+ .mat-mdc-button,
464
+ .mat-mdc-unelevated-button,
465
+ .mat-mdc-outlined-button {
466
+ transition: none;
467
+ }
468
+ }
469
+ }
@@ -0,0 +1,37 @@
1
+ .full-screen-dialog {
2
+ .mat-mdc-dialog-container {
3
+ padding: 0;
4
+ border-radius: 0;
5
+ }
6
+ }
7
+
8
+ .dialog-xs .mat-mdc-dialog-container {
9
+ max-width: 320px;
10
+ }
11
+
12
+ .dialog-sm .mat-mdc-dialog-container {
13
+ max-width: 440px;
14
+ }
15
+
16
+ .dialog-md .mat-mdc-dialog-container {
17
+ max-width: 640px;
18
+ }
19
+
20
+ .dialog-lg .mat-mdc-dialog-container {
21
+ max-width: 840px;
22
+ }
23
+
24
+ .dialog-xl .mat-mdc-dialog-container {
25
+ max-width: 1240px;
26
+ }
27
+
28
+ .dialog-xxl .mat-mdc-dialog-container {
29
+ max-width: 1440px;
30
+ }
31
+
32
+ @media (max-width: 768px) {
33
+ .mat-mdc-dialog-container {
34
+ max-width: 95vw !important;
35
+ max-height: 90vh !important;
36
+ }
37
+ }
@@ -0,0 +1,12 @@
1
+ // Common mixins used across components
2
+ @mixin responsive($breakpoint) {
3
+ @media (max-width: $breakpoint) {
4
+ @content;
5
+ }
6
+ }
7
+
8
+ @mixin reduced-motion {
9
+ @media (prefers-reduced-motion: reduce) {
10
+ @content;
11
+ }
12
+ }
@@ -0,0 +1,23 @@
1
+ // Bootstrap 5.3+ Color Palette
2
+ $bootstrap-colors: (
3
+ primary: #0d6efd,
4
+ secondary: #6c757d,
5
+ success: #198754,
6
+ danger: #dc3545,
7
+ warning: #ffc107,
8
+ info: #0dcaf0,
9
+ light: #f8f9fa,
10
+ dark: #212529,
11
+ );
12
+
13
+ // Contrast colors
14
+ $bootstrap-contrast: (
15
+ primary: #ffffff,
16
+ secondary: #ffffff,
17
+ success: #ffffff,
18
+ danger: #ffffff,
19
+ warning: #000000,
20
+ info: #000000,
21
+ light: #000000,
22
+ dark: #ffffff,
23
+ );
@@ -0,0 +1,15 @@
1
+ // Import Tabulator table styles
2
+ @import 'tabulator-tables/dist/css/tabulator.min.css';
3
+ @import 'tabulator-tables/dist/css/tabulator_modern.min.css';
4
+ @import 'tabulator-tables/dist/css/tabulator_midnight.min.css';
5
+ @import 'tabulator-tables/dist/css/tabulator_simple.min.css';
6
+ @import 'tabulator-tables/dist/css/tabulator_site.min.css';
7
+ @import 'tabulator-tables/dist/css/tabulator_site_dark.min.css';
8
+
9
+ // Import variables and mixins first
10
+ @forward 'variables';
11
+ @forward 'mixins';
12
+
13
+ // Then component styles
14
+ @forward 'custom-buttons';
15
+ @forward 'custom-dialog';