@acontplus/ng-components 1.0.13 → 1.2.1

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.
@@ -1,469 +0,0 @@
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
- }