commons-shared-web-ui 0.0.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.
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "commons-shared-web-ui",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/animations": "20.3.15",
6
+ "@angular/cdk": "20.2.14",
7
+ "@angular/common": "20.3.15",
8
+ "@angular/compiler": "20.3.15",
9
+ "@angular/core": "20.3.15",
10
+ "@angular/forms": "20.3.15",
11
+ "@angular/material": "20.2.14",
12
+ "@angular/platform-browser": "20.3.15",
13
+ "@angular/platform-browser-dynamic": "20.3.15",
14
+ "@angular/router": "20.3.15",
15
+ "rxjs": "7.8.0",
16
+ "zone.js": "0.14.10"
17
+ },
18
+ "dependencies": {
19
+ "tslib": "^2.3.0"
20
+ },
21
+ "module": "fesm2022/commons-shared-web-ui.mjs",
22
+ "typings": "index.d.ts",
23
+ "exports": {
24
+ "./package.json": {
25
+ "default": "./package.json"
26
+ },
27
+ ".": {
28
+ "types": "./index.d.ts",
29
+ "default": "./fesm2022/commons-shared-web-ui.mjs"
30
+ }
31
+ },
32
+ "sideEffects": false
33
+ }
@@ -0,0 +1,85 @@
1
+ @use 'sass:map';
2
+
3
+ $default-alert-config: (
4
+ font-family: ('Roboto', sans-serif),
5
+
6
+ // Structure (Default values in rem, assuming 16px root)
7
+ padding: 1rem 2rem,
8
+ // 16px 32px
9
+ radius: 0.75rem,
10
+ // 12px
11
+ gap: 1rem,
12
+ // 16px
13
+
14
+ // Icon
15
+ icon-size: 1.25rem,
16
+ // 20px
17
+ icon-margin-top: 0.125rem,
18
+ // 2px
19
+
20
+ // Text
21
+ title-size: 1rem,
22
+ // 16px
23
+ title-line-height: 1.5rem,
24
+ // 24px
25
+ message-size: 0.875rem,
26
+ // 14px
27
+
28
+ // Info
29
+ info-bg: #F1F3F4,
30
+ info-color: #3C4043,
31
+
32
+ // Warning
33
+ warning-bg: #F9C80E1F,
34
+ warning-color: #3C4043,
35
+ // Default text color for warning usually dark
36
+ warning-title-color: #3C4043,
37
+ // Making title dark for better contrast with light yellow bg
38
+ warning-shadow: none,
39
+ // Removing shadow as per clean flat design, or keeping if specified. User said "warning-shadow" variant exists.
40
+
41
+ // Success
42
+ success-bg: #E6F4EA,
43
+ // Light green similar to Info/Error pattern
44
+ success-color: #16A34A,
45
+
46
+ // Error
47
+ error-bg: #FCE8E6,
48
+ // Light red
49
+ error-color: #D93025
50
+ );
51
+
52
+ @mixin alert-theme($user-config: ()) {
53
+ $config: map.merge($default-alert-config, $user-config);
54
+
55
+ --cc-alert-font-family: #{map.get($config, font-family)};
56
+
57
+ // Structure
58
+ --cc-alert-padding: #{map.get($config, padding)};
59
+ --cc-alert-radius: #{map.get($config, radius)};
60
+ --cc-alert-gap: #{map.get($config, gap)};
61
+
62
+ // Icon
63
+ --cc-alert-icon-size: #{map.get($config, icon-size)};
64
+ --cc-alert-icon-margin-top: #{map.get($config, icon-margin-top)};
65
+
66
+ // Text
67
+ --cc-alert-title-size: #{map.get($config, title-size)};
68
+ --cc-alert-title-line-height: #{map.get($config, title-line-height)};
69
+ --cc-alert-message-size: #{map.get($config, message-size)};
70
+
71
+ // Colors
72
+ --cc-alert-info-bg: #{map.get($config, info-bg)};
73
+ --cc-alert-info-color: #{map.get($config, info-color)};
74
+
75
+ --cc-alert-warning-bg: #{map.get($config, warning-bg)};
76
+ --cc-alert-warning-color: #{map.get($config, warning-color)};
77
+ --cc-alert-warning-title-color: #{map.get($config, warning-title-color)};
78
+ --cc-alert-warning-shadow: #{map.get($config, warning-shadow)};
79
+ --cc-alert-success-bg: #{map.get($config, success-bg)};
80
+ --cc-alert-success-color: #{map.get($config, success-color)};
81
+
82
+ --cc-alert-error-bg: #{map.get($config, error-bg)};
83
+ --cc-alert-error-color: #{map.get($config, error-color)};
84
+ --cc-alert-warning-shadow: 0 0.25rem 0.25rem rgba(0, 0, 0, 0.25); // 0px 4px 4px
85
+ }
@@ -0,0 +1,121 @@
1
+ @use 'sass:map';
2
+
3
+ // Default Button Configuration
4
+ $default-button-config: (
5
+ // Common
6
+ font-family: ('Roboto', sans-serif),
7
+ font-weight: 500,
8
+ font-size: 1rem,
9
+ // 16px
10
+ padding: 0.5rem 1rem,
11
+ // 8px 16px
12
+
13
+ // Primary (Dark)
14
+ primary-bg: #262125,
15
+ primary-color: #FFFFFF,
16
+ primary-radius: 0.5rem,
17
+ // 8px
18
+ primary-border: none,
19
+
20
+ // Warning (Yellow)
21
+ warning-bg: #F9C80E,
22
+ warning-color: #000000,
23
+ warning-radius: 0.25rem,
24
+ // 4px
25
+ warning-border: none,
26
+
27
+ // Outline (Grey Outline)
28
+ outline-bg: transparent,
29
+ outline-color: #000000,
30
+ outline-radius: 0.25rem,
31
+ // 4px
32
+ outline-border: 0.0625rem solid #BDC1C6,
33
+ // 1px solid
34
+
35
+ // Secondary (Light Grey)
36
+ secondary-bg: #E8EAED,
37
+ secondary-color: #000000,
38
+ secondary-radius: 0.25rem,
39
+ // 4px
40
+ secondary-border: none,
41
+
42
+ // Success (Green)
43
+ success-bg: #16A34A,
44
+ success-color: #FFFFFF,
45
+ success-radius: 0.5rem,
46
+ // 8px
47
+ success-border: none,
48
+
49
+ // Danger (Red)
50
+ danger-bg: #E63E30,
51
+ danger-color: #FFFFFF,
52
+ danger-radius: 0.25rem,
53
+ // 4px
54
+ danger-border: none,
55
+
56
+ // Danger Outline (Red Outline)
57
+ danger-outline-bg: transparent,
58
+ danger-outline-color: #E63E30,
59
+ danger-outline-radius: 0.5rem,
60
+ // 8px
61
+ danger-outline-border: 0.0625rem solid #E63E30,
62
+ // 1px solid
63
+
64
+ // Disabled State
65
+ disabled-opacity: 0.6,
66
+ disabled-cursor: not-allowed
67
+ );
68
+
69
+ @mixin button-theme($user-config: ()) {
70
+ $config: map.merge($default-button-config, $user-config);
71
+
72
+ // Common
73
+ --cc-btn-font-family: #{map.get($config, font-family)};
74
+ --cc-btn-font-weight: #{map.get($config, font-weight)};
75
+ --cc-btn-font-size: #{map.get($config, font-size)};
76
+ --cc-btn-padding: #{map.get($config, padding)};
77
+ --cc-btn-disabled-opacity: #{map.get($config, disabled-opacity)};
78
+ --cc-btn-disabled-cursor: #{map.get($config, disabled-cursor)};
79
+
80
+ // Primary
81
+ --cc-btn-primary-bg: #{map.get($config, primary-bg)};
82
+ --cc-btn-primary-color: #{map.get($config, primary-color)};
83
+ --cc-btn-primary-radius: #{map.get($config, primary-radius)};
84
+ --cc-btn-primary-border: #{map.get($config, primary-border)};
85
+
86
+ // Warning
87
+ --cc-btn-warning-bg: #{map.get($config, warning-bg)};
88
+ --cc-btn-warning-color: #{map.get($config, warning-color)};
89
+ --cc-btn-warning-radius: #{map.get($config, warning-radius)};
90
+ --cc-btn-warning-border: #{map.get($config, warning-border)};
91
+
92
+ // Outline
93
+ --cc-btn-outline-bg: #{map.get($config, outline-bg)};
94
+ --cc-btn-outline-color: #{map.get($config, outline-color)};
95
+ --cc-btn-outline-radius: #{map.get($config, outline-radius)};
96
+ --cc-btn-outline-border: #{map.get($config, outline-border)};
97
+
98
+ // Secondary
99
+ --cc-btn-secondary-bg: #{map.get($config, secondary-bg)};
100
+ --cc-btn-secondary-color: #{map.get($config, secondary-color)};
101
+ --cc-btn-secondary-radius: #{map.get($config, secondary-radius)};
102
+ --cc-btn-secondary-border: #{map.get($config, secondary-border)};
103
+
104
+ // Success
105
+ --cc-btn-success-bg: #{map.get($config, success-bg)};
106
+ --cc-btn-success-color: #{map.get($config, success-color)};
107
+ --cc-btn-success-radius: #{map.get($config, success-radius)};
108
+ --cc-btn-success-border: #{map.get($config, success-border)};
109
+
110
+ // Danger
111
+ --cc-btn-danger-bg: #{map.get($config, danger-bg)};
112
+ --cc-btn-danger-color: #{map.get($config, danger-color)};
113
+ --cc-btn-danger-radius: #{map.get($config, danger-radius)};
114
+ --cc-btn-danger-border: #{map.get($config, danger-border)};
115
+
116
+ // Danger Outline
117
+ --cc-btn-danger-outline-bg: #{map.get($config, danger-outline-bg)};
118
+ --cc-btn-danger-outline-color: #{map.get($config, danger-outline-color)};
119
+ --cc-btn-danger-outline-radius: #{map.get($config, danger-outline-radius)};
120
+ --cc-btn-danger-outline-border: #{map.get($config, danger-outline-border)};
121
+ }
@@ -0,0 +1,78 @@
1
+ @use 'sass:map';
2
+
3
+ // Default configuration for the configurable form theme
4
+ $default-configurable-form-config: (
5
+ // Colors
6
+ primary-color: #3B82F6,
7
+ surface-background: #ffffff,
8
+ border-color: #D1D5DB,
9
+ text-primary: #111827,
10
+ text-secondary: #6B7280,
11
+ error-color: #DC2626,
12
+ disabled-background: #F3F4F6,
13
+ hover-background: #F9FAFB,
14
+
15
+ // Inputs specific
16
+ input-border-color: #D1D5DB,
17
+ input-focus-border-color: #3B82F6,
18
+ input-hover-border-color: #9CA3AF,
19
+ input-bg: #ffffff,
20
+
21
+ // Dimensions
22
+ section-radius: 12px,
23
+ section-padding: 2rem,
24
+ section-spacing: 1.5rem,
25
+ input-radius: 8px,
26
+ input-padding-y: 0.625rem,
27
+ input-padding-x: 0.875rem,
28
+
29
+ // Typography
30
+ font-family: (-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif),
31
+ section-title-size: 1.25rem,
32
+ section-title-weight: 600,
33
+ label-size: 0.875rem,
34
+ label-weight: 600,
35
+ input-font-size: 0.875rem,
36
+ hint-size: 0.75rem,
37
+
38
+ // Shadows
39
+ section-shadow: (0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)),
40
+ );
41
+
42
+ // Mixin to generate CSS variables for the configurable form component
43
+ @mixin configurable-form-theme($user-config: ()) {
44
+ // Merge user config with defaults
45
+ $config: map.merge($default-configurable-form-config, $user-config);
46
+
47
+ // Generate CSS Variables
48
+ --cf-primary-color: #{map.get($config, primary-color)};
49
+ --cf-surface-background: #{map.get($config, surface-background)};
50
+ --cf-border-color: #{map.get($config, border-color)};
51
+ --cf-text-primary: #{map.get($config, text-primary)};
52
+ --cf-text-secondary: #{map.get($config, text-secondary)};
53
+ --cf-error-color: #{map.get($config, error-color)};
54
+ --cf-disabled-background: #{map.get($config, disabled-background)};
55
+ --cf-hover-background: #{map.get($config, hover-background)};
56
+
57
+ --cf-input-border-color: #{map.get($config, input-border-color)};
58
+ --cf-input-focus-border-color: #{map.get($config, input-focus-border-color)};
59
+ --cf-input-hover-border-color: #{map.get($config, input-hover-border-color)};
60
+ --cf-input-bg: #{map.get($config, input-bg)};
61
+
62
+ --cf-section-radius: #{map.get($config, section-radius)};
63
+ --cf-section-padding: #{map.get($config, section-padding)};
64
+ --cf-section-spacing: #{map.get($config, section-spacing)};
65
+ --cf-input-radius: #{map.get($config, input-radius)};
66
+ --cf-input-padding-y: #{map.get($config, input-padding-y)};
67
+ --cf-input-padding-x: #{map.get($config, input-padding-x)};
68
+
69
+ --cf-font-family: #{map.get($config, font-family)};
70
+ --cf-section-title-size: #{map.get($config, section-title-size)};
71
+ --cf-section-title-weight: #{map.get($config, section-title-weight)};
72
+ --cf-label-size: #{map.get($config, label-size)};
73
+ --cf-label-weight: #{map.get($config, label-weight)};
74
+ --cf-input-font-size: #{map.get($config, input-font-size)};
75
+ --cf-hint-size: #{map.get($config, hint-size)};
76
+
77
+ --cf-section-shadow: #{map.get($config, section-shadow)};
78
+ }
@@ -0,0 +1,87 @@
1
+ @use 'sass:map';
2
+
3
+ $default-confirmation-modal-config: (
4
+ bg: #FFFFFF,
5
+ radius: 0.75rem,
6
+ // 12px
7
+ shadow: 0 0.25rem 1.5rem rgba(0, 0, 0, 0.15),
8
+ // 0 4px 24px
9
+ border: none,
10
+
11
+ // Header
12
+ header-padding: 0.5rem 1rem,
13
+ // 24px
14
+ header-border-bottom: 0.0625rem solid #E5E7EB,
15
+ // 1px
16
+ title-font-size: 1.25rem,
17
+ // 20px
18
+ title-font-weight: 600,
19
+ title-color: #111827,
20
+ icon-size: 1.5rem,
21
+ // 24px
22
+ close-icon-size: 1.25rem,
23
+ // 20px
24
+
25
+ // Body
26
+ body-padding: 1.5rem,
27
+ // 24px
28
+ body-text-color: #374151,
29
+
30
+ // Inputs (Defaults)
31
+ input-padding: 0.625rem 0.75rem,
32
+ // 10px 12px
33
+ input-radius: 0.375rem,
34
+ // 6px
35
+ input-font-size: 0.875rem,
36
+ // 14px
37
+ label-margin-bottom: 0.5rem,
38
+ // 8px
39
+ textarea-min-height: 6.25rem,
40
+ // 100px
41
+
42
+ // Footer
43
+ footer-bg: #F9FAFB,
44
+ footer-padding: 1rem 1.5rem,
45
+ // 24px
46
+ footer-border-top: 0.0625rem solid #E5E7EB,
47
+ // 1px
48
+
49
+ // Spinner
50
+ spinner-size: 1rem // 16px
51
+ );
52
+
53
+ @mixin confirmation-modal-theme($user-config: ()) {
54
+ $config: map.merge($default-confirmation-modal-config, $user-config);
55
+
56
+ --cc-modal-bg: #{map.get($config, bg)};
57
+ --cc-modal-radius: #{map.get($config, radius)};
58
+ --cc-modal-shadow: #{map.get($config, shadow)};
59
+ --cc-modal-border: #{map.get($config, border)};
60
+
61
+ // Header Themes
62
+ --cc-modal-header-bg-dark: #262125;
63
+ --cc-modal-header-title-color-dark: #FFFFFF;
64
+
65
+ --cc-modal-header-padding: #{map.get($config, header-padding)};
66
+ --cc-modal-header-border-bottom: #{map.get($config, header-border-bottom)};
67
+ --cc-modal-title-size: #{map.get($config, title-font-size)};
68
+ --cc-modal-title-weight: #{map.get($config, title-font-weight)};
69
+ --cc-modal-title-color: #{map.get($config, title-color)};
70
+ --cc-modal-icon-size: #{map.get($config, icon-size)};
71
+ --cc-modal-close-icon-size: #{map.get($config, close-icon-size)};
72
+
73
+ --cc-modal-body-padding: #{map.get($config, body-padding)};
74
+ --cc-modal-body-color: #{map.get($config, body-text-color)};
75
+
76
+ --cc-modal-input-padding: #{map.get($config, input-padding)};
77
+ --cc-modal-input-radius: #{map.get($config, input-radius)};
78
+ --cc-modal-input-font-size: #{map.get($config, input-font-size)};
79
+ --cc-modal-label-margin-bottom: #{map.get($config, label-margin-bottom)};
80
+ --cc-modal-textarea-min-height: #{map.get($config, textarea-min-height)};
81
+
82
+ --cc-modal-footer-bg: #{map.get($config, footer-bg)};
83
+ --cc-modal-footer-padding: #{map.get($config, footer-padding)};
84
+ --cc-modal-footer-border-top: #{map.get($config, footer-border-top)};
85
+
86
+ --cc-modal-spinner-size: #{map.get($config, spinner-size)};
87
+ }
@@ -0,0 +1,50 @@
1
+ @use 'sass:map';
2
+
3
+ // Default Filter Sidebar Configuration
4
+ $default-filter-config: (
5
+ // Sidebar Container
6
+ bg-color: #ffffff,
7
+ border-color: #E5E7EB,
8
+ width: 300px,
9
+
10
+ // Tabs
11
+ tab-bg: transparent,
12
+ tab-color: #6B7280,
13
+ tab-active-bg: #FEF2F2,
14
+ tab-active-color: #EF4444,
15
+ tab-active-border: #FECACA,
16
+ tab-hover-bg: #F3F4F6,
17
+
18
+ // Sections
19
+ section-title-color: #374151,
20
+ accordion-title-color: #111827,
21
+
22
+ // Actions Footer
23
+ footer-bg: #ffffff,
24
+ footer-border-color: #E5E7EB
25
+ );
26
+
27
+ @mixin filter-sidebar-theme($user-config: ()) {
28
+ $config: map.merge($default-filter-config, $user-config);
29
+
30
+ // Sidebar
31
+ --cc-filter-bg: #{map.get($config, bg-color)};
32
+ --cc-filter-border-color: #{map.get($config, border-color)};
33
+ --cc-filter-width: #{map.get($config, width)};
34
+
35
+ // Tabs
36
+ --cc-filter-tab-bg: #{map.get($config, tab-bg)};
37
+ --cc-filter-tab-color: #{map.get($config, tab-color)};
38
+ --cc-filter-tab-active-bg: #{map.get($config, tab-active-bg)};
39
+ --cc-filter-tab-active-color: #{map.get($config, tab-active-color)};
40
+ --cc-filter-tab-active-border: #{map.get($config, tab-active-border)};
41
+ --cc-filter-tab-hover-bg: #{map.get($config, tab-hover-bg)};
42
+
43
+ // Sections
44
+ --cc-filter-section-title-color: #{map.get($config, section-title-color)};
45
+ --cc-filter-accordion-title-color: #{map.get($config, accordion-title-color)};
46
+
47
+ // Footer
48
+ --cc-filter-footer-bg: #{map.get($config, footer-bg)};
49
+ --cc-filter-footer-border-color: #{map.get($config, footer-border-color)};
50
+ }
@@ -0,0 +1,86 @@
1
+ @use 'sass:map';
2
+
3
+ // Default configuration for the nav theme
4
+ $default-nav-config: (
5
+ // Container
6
+ container-bg: #f5f5f5,
7
+ container-padding: 4px,
8
+ container-radius: 6px,
9
+ container-border: none,
10
+ container-gap: 4px,
11
+
12
+ // Item - Font & Text
13
+ font-family: ('Roboto', sans-serif),
14
+ font-size: 14px,
15
+ font-weight: 500,
16
+ item-color: #666666,
17
+ item-bg: transparent,
18
+ item-padding: 8px 16px,
19
+ item-radius: 4px,
20
+ item-border: none,
21
+
22
+ // Item - Active State
23
+ item-active-bg: #ffffff,
24
+ item-active-color: #1a1a1a,
25
+ item-active-font-weight: 600,
26
+ item-active-border-color: transparent,
27
+ item-active-border-width: 2px,
28
+ item-active-shadow: 0 1px 3px rgba(0, 0, 0, 0.1),
29
+
30
+ // Item - Hover State
31
+ item-hover-bg: #eeeeee,
32
+ item-hover-color: #333333,
33
+
34
+ // Item - Disabled State
35
+ disabled-opacity: 0.5,
36
+
37
+ // Badge
38
+ badge-bg: #e74c3c,
39
+ badge-color: #ffffff,
40
+ badge-size: 18px,
41
+ badge-font-size: 10px
42
+ );
43
+
44
+ // Mixin to generate CSS variables for the nav component
45
+ @mixin nav-theme($user-config: ()) {
46
+ // Merge user config with defaults
47
+ $config: map.merge($default-nav-config, $user-config);
48
+
49
+ // Container
50
+ --cc-nav-container-bg: #{map.get($config, container-bg)};
51
+ --cc-nav-container-padding: #{map.get($config, container-padding)};
52
+ --cc-nav-container-radius: #{map.get($config, container-radius)};
53
+ --cc-nav-container-border: #{map.get($config, container-border)};
54
+ --cc-nav-container-gap: #{map.get($config, container-gap)};
55
+
56
+ // Item - Font & Text
57
+ --cc-nav-font-family: #{map.get($config, font-family)};
58
+ --cc-nav-font-size: #{map.get($config, font-size)};
59
+ --cc-nav-font-weight: #{map.get($config, font-weight)};
60
+ --cc-nav-item-color: #{map.get($config, item-color)};
61
+ --cc-nav-item-bg: #{map.get($config, item-bg)};
62
+ --cc-nav-item-padding: #{map.get($config, item-padding)};
63
+ --cc-nav-item-radius: #{map.get($config, item-radius)};
64
+ --cc-nav-item-border: #{map.get($config, item-border)};
65
+
66
+ // Item - Active State
67
+ --cc-nav-item-active-bg: #{map.get($config, item-active-bg)};
68
+ --cc-nav-item-active-color: #{map.get($config, item-active-color)};
69
+ --cc-nav-item-active-font-weight: #{map.get($config, item-active-font-weight)};
70
+ --cc-nav-item-active-border-color: #{map.get($config, item-active-border-color)};
71
+ --cc-nav-item-active-border-width: #{map.get($config, item-active-border-width)};
72
+ --cc-nav-item-active-shadow: #{map.get($config, item-active-shadow)};
73
+
74
+ // Item - Hover State
75
+ --cc-nav-item-hover-bg: #{map.get($config, item-hover-bg)};
76
+ --cc-nav-item-hover-color: #{map.get($config, item-hover-color)};
77
+
78
+ // Item - Disabled State
79
+ --cc-nav-disabled-opacity: #{map.get($config, disabled-opacity)};
80
+
81
+ // Badge
82
+ --cc-nav-badge-bg: #{map.get($config, badge-bg)};
83
+ --cc-nav-badge-color: #{map.get($config, badge-color)};
84
+ --cc-nav-badge-size: #{map.get($config, badge-size)};
85
+ --cc-nav-badge-font-size: #{map.get($config, badge-font-size)};
86
+ }
@@ -0,0 +1,66 @@
1
+ @use 'sass:map';
2
+
3
+ // Default configuration for the pagination theme
4
+ $default-pagination-config: (
5
+ // Font & Text
6
+ font-family: ('Roboto', sans-serif),
7
+ text-color: #757575,
8
+ font-size: 14px,
9
+
10
+ // Select Dropdown
11
+ select-bg: #f5f5f5,
12
+ select-border: none,
13
+ select-radius: 4px,
14
+ select-padding: 6px 12px,
15
+ select-text-color: #333,
16
+ select-arrow-color: #f44336, // Red arrow
17
+
18
+ // Buttons
19
+ btn-size: 32px,
20
+ btn-bg: #ffffff,
21
+ btn-border: 1px solid #e0e0e0,
22
+ btn-radius: 4px,
23
+ btn-text-color: #333,
24
+
25
+ // States
26
+ btn-hover-bg: #f5f5f5,
27
+ btn-active-bg: #fff,
28
+ btn-active-border: 1px solid #ff4081, // Pinkish red
29
+ btn-active-text: #ff4081,
30
+
31
+ // Disabled
32
+ disabled-opacity: 0.5,
33
+ disabled-bg: #f9f9f9
34
+ );
35
+
36
+ // Mixin to generate CSS variables for the pagination component
37
+ @mixin pagination-theme($user-config: ()) {
38
+ // Merge user config with defaults
39
+ $config: map.merge($default-pagination-config, $user-config);
40
+
41
+ // Generate CSS Variables
42
+ --cc-pagination-font-family: #{map.get($config, font-family)};
43
+ --cc-pagination-text-color: #{map.get($config, text-color)};
44
+ --cc-pagination-font-size: #{map.get($config, font-size)};
45
+
46
+ --cc-pagination-select-bg: #{map.get($config, select-bg)};
47
+ --cc-pagination-select-border: #{map.get($config, select-border)};
48
+ --cc-pagination-select-radius: #{map.get($config, select-radius)};
49
+ --cc-pagination-select-padding: #{map.get($config, select-padding)};
50
+ --cc-pagination-select-text-color: #{map.get($config, select-text-color)};
51
+ --cc-pagination-select-arrow-color: #{map.get($config, select-arrow-color)};
52
+
53
+ --cc-pagination-btn-size: #{map.get($config, btn-size)};
54
+ --cc-pagination-btn-bg: #{map.get($config, btn-bg)};
55
+ --cc-pagination-btn-border: #{map.get($config, btn-border)};
56
+ --cc-pagination-btn-radius: #{map.get($config, btn-radius)};
57
+ --cc-pagination-btn-text-color: #{map.get($config, btn-text-color)};
58
+
59
+ --cc-pagination-btn-hover-bg: #{map.get($config, btn-hover-bg)};
60
+ --cc-pagination-btn-active-bg: #{map.get($config, btn-active-bg)};
61
+ --cc-pagination-btn-active-border: #{map.get($config, btn-active-border)};
62
+ --cc-pagination-btn-active-text: #{map.get($config, btn-active-text)};
63
+
64
+ --cc-pagination-disabled-opacity: #{map.get($config, disabled-opacity)};
65
+ --cc-pagination-disabled-bg: #{map.get($config, disabled-bg)};
66
+ }