@agorapulse/ui-theme 20.1.18 → 20.1.20

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 (49) hide show
  1. package/agorapulse-ui-theme-20.1.20.tgz +0 -0
  2. package/assets/desktop_variables.css +10 -0
  3. package/assets/mobile_variables.css +10 -0
  4. package/assets/style/_table.scss +5 -5
  5. package/assets/style/_tooltip.scss +6 -1
  6. package/assets/style/css-ui/_action-dropdown.scss +163 -0
  7. package/assets/style/css-ui/_avatar.scss +236 -0
  8. package/assets/style/css-ui/_badge.scss +28 -0
  9. package/assets/style/css-ui/_button.scss +261 -0
  10. package/assets/style/css-ui/_checkbox.scss +168 -0
  11. package/assets/style/css-ui/_counter.scss +76 -0
  12. package/assets/style/css-ui/_datepicker.scss +307 -0
  13. package/assets/style/css-ui/_dot-stepper.scss +67 -0
  14. package/assets/style/{_helpers.scss → css-ui/_helpers.scss} +14 -13
  15. package/assets/style/css-ui/_icon-button.scss +162 -0
  16. package/assets/style/css-ui/_infobox.scss +154 -0
  17. package/assets/style/css-ui/_input.scss +133 -0
  18. package/assets/style/css-ui/_label.scss +89 -0
  19. package/assets/style/css-ui/_link.scss +91 -0
  20. package/assets/style/css-ui/_loader.scss +178 -0
  21. package/assets/style/css-ui/_mixins.scss +50 -0
  22. package/assets/style/css-ui/_pagination.scss +177 -0
  23. package/assets/style/css-ui/_radio-card.scss +200 -0
  24. package/assets/style/css-ui/_radio.scss +111 -0
  25. package/assets/style/css-ui/_select.scss +656 -0
  26. package/assets/style/css-ui/_selection-dropdown.scss +183 -0
  27. package/assets/style/css-ui/_snackbar.scss +166 -0
  28. package/assets/style/css-ui/_split-button.scss +79 -0
  29. package/assets/style/css-ui/_status.scss +71 -0
  30. package/assets/style/css-ui/_stepper.scss +127 -0
  31. package/assets/style/css-ui/_table.scss +325 -0
  32. package/assets/style/css-ui/_tabs.scss +182 -0
  33. package/assets/style/css-ui/_tag.scss +169 -0
  34. package/assets/style/css-ui/_textarea.scss +121 -0
  35. package/assets/style/css-ui/_toggle.scss +136 -0
  36. package/assets/style/css-ui/_tooltip.scss +122 -0
  37. package/assets/style/{_mat-typography.scss → css-ui/_typography.scss} +34 -26
  38. package/assets/style/css-ui/index.css +4723 -0
  39. package/assets/style/css-ui/index.css.map +1 -0
  40. package/assets/style/css-ui/index.scss +34 -0
  41. package/assets/style/theme.scss +9 -2
  42. package/package.json +13 -2
  43. package/src/tokens/system/icon.json +33 -0
  44. package/agorapulse-ui-theme-20.1.18.tgz +0 -0
  45. package/assets/style/lovable/lovable-button.css +0 -446
  46. package/assets/style/lovable/lovable-input.css +0 -119
  47. package/assets/style/lovable/lovable-radio.css +0 -109
  48. package/assets/style/lovable/lovable-toggle.css +0 -161
  49. package/assets/style/lovable/tailwind.config.ts +0 -431
Binary file
@@ -200,6 +200,16 @@
200
200
  --sys-color-feature-lock-text: #6554C0;
201
201
  --sys-icon-sm: 14px;
202
202
  --sys-icon-md: 16px;
203
+ --sys-icon-css-xxs: 8px;
204
+ --sys-icon-css-nano: 10px;
205
+ --sys-icon-css-xs: 12px;
206
+ --sys-icon-css-sm: 16px;
207
+ --sys-icon-css-mini-sm: 18px;
208
+ --sys-icon-css-md: 24px;
209
+ --sys-icon-css-lg: 32px;
210
+ --sys-icon-css-xl: 40px;
211
+ --sys-icon-css-xxl: 48px;
212
+ --sys-icon-css-xxxl: 64px;
203
213
  --sys-radio-transition-duration: 250ms;
204
214
  --sys-settings-content-max-width-md: 700px;
205
215
  --sys-settings-content-max-width-lg: 1200px;
@@ -200,6 +200,16 @@
200
200
  --sys-color-feature-lock-text: #6554C0;
201
201
  --sys-icon-sm: 14px;
202
202
  --sys-icon-md: 16px;
203
+ --sys-icon-css-xxs: 8px;
204
+ --sys-icon-css-nano: 10px;
205
+ --sys-icon-css-xs: 12px;
206
+ --sys-icon-css-sm: 16px;
207
+ --sys-icon-css-mini-sm: 18px;
208
+ --sys-icon-css-md: 24px;
209
+ --sys-icon-css-lg: 32px;
210
+ --sys-icon-css-xl: 40px;
211
+ --sys-icon-css-xxl: 48px;
212
+ --sys-icon-css-xxxl: 64px;
203
213
  --sys-radio-transition-duration: 250ms;
204
214
  --sys-settings-content-max-width-md: 700px;
205
215
  --sys-settings-content-max-width-lg: 1200px;
@@ -30,8 +30,8 @@ $cell-height-small: 40px;
30
30
  border-radius: var(--ref-border-radius-md);
31
31
  }
32
32
 
33
- // When table has footer, adjust tbody height
34
- &:has(tfoot > .cdk-footer-row) tbody {
33
+ // When table has visible footer, adjust tbody height
34
+ &:has(tfoot > .cdk-footer-row:not([hidden])) tbody {
35
35
  height: calc(100% - 2 * $cell-height);
36
36
  max-height: calc(100% - 2 * $cell-height);
37
37
  }
@@ -50,8 +50,8 @@ $cell-height-small: 40px;
50
50
  }
51
51
  }
52
52
 
53
- // Apply border radius to last row only when table has no footer
54
- &:not(:has(tfoot > .cdk-footer-row)) tr[cdk-row]:last-child {
53
+ // Apply border radius to last row only when table has no visible footer
54
+ &:not(:has(tfoot > .cdk-footer-row:not([hidden]))) tr[cdk-row]:last-child {
55
55
  td[cdk-cell]:first-child {
56
56
  border-bottom-left-radius: var(--ref-border-radius-md);
57
57
  }
@@ -110,7 +110,7 @@ $cell-height-small: 40px;
110
110
  max-height: calc(100% - $cell-height-small);
111
111
  }
112
112
 
113
- &:has(tfoot > .cdk-footer-row) tbody {
113
+ &:has(tfoot > .cdk-footer-row:not([hidden])) tbody {
114
114
  height: calc(100% - 2 * $cell-height-small);
115
115
  max-height: calc(100% - 2 * $cell-height-small);
116
116
  }
@@ -2,13 +2,14 @@
2
2
  --ap-arrow-width: 16px;
3
3
  --ap-arrow-height: 8px;
4
4
  --ap-arrow-offset: 10px;
5
+ --ap-tooltip-z-index: 9999998;
5
6
 
6
7
  width: fit-content;
7
8
  max-width: 350px;
8
9
  background: var(--comp-tooltip-text-color-main-default-bg);
9
10
  border-radius: var(--ref-border-radius-md);
10
11
  position: absolute;
11
- z-index: 9999999;
12
+ z-index: var(--ap-tooltip-z-index);
12
13
  animation: fadeIn var(--ref-animation-short) ease-in-out;
13
14
 
14
15
  @keyframes fadeIn {
@@ -39,6 +40,10 @@
39
40
  }
40
41
  }
41
42
 
43
+ &.ap-tooltip-click-trigger {
44
+ z-index: calc(var(--ap-tooltip-z-index) + 1); // has to be above the z-index of the .ap-tooltip class above
45
+ }
46
+
42
47
  .ap-content-container {
43
48
  padding: var(--ref-spacing-xxs) var(--ref-spacing-xs);
44
49
  border-radius: var(--ref-border-radius-md);
@@ -0,0 +1,163 @@
1
+ // Agorapulse Action Dropdown Styles
2
+ @use 'mixins' as m;
3
+
4
+ // Container
5
+ .ap-action-dropdown {
6
+ background-color: var(--comp-action-dropdown-background-color, var(--ref-color-white));
7
+ border-radius: var(--comp-action-dropdown-border-radius, var(--ref-border-radius-md));
8
+ box-shadow: var(--comp-action-dropdown-box-shadow, 0 4px 25px -2px rgba(52, 69, 99, 0.15), 0 4px 6px -2px rgba(52, 69, 99, 0.15));
9
+ padding: var(--comp-action-dropdown-padding, var(--ref-spacing-xxs));
10
+ outline: none;
11
+ overflow: hidden;
12
+ z-index: 1000;
13
+ width: 250px;
14
+
15
+ &.large {
16
+ width: 340px;
17
+ }
18
+
19
+ &:focus {
20
+ outline: 2px solid var(--comp-action-dropdown-item-background-color-focused, var(--ref-color-electric-blue-10));
21
+ outline-offset: 2px;
22
+ }
23
+ }
24
+
25
+ // Item
26
+ .ap-action-dropdown-item {
27
+ display: flex;
28
+ align-items: center;
29
+ width: 100%;
30
+ height: 40px;
31
+ padding: var(--comp-action-dropdown-item-padding, var(--ref-spacing-xxs) var(--ref-spacing-xs));
32
+ border: none;
33
+ background: transparent;
34
+ color: var(--comp-action-dropdown-item-text-color, var(--ref-color-grey-100));
35
+ cursor: pointer;
36
+ font-family: var(--ref-font-family);
37
+ font-size: var(--comp-action-dropdown-item-text-size, var(--ref-font-size-sm));
38
+ line-height: var(--comp-action-dropdown-item-text-line-height, var(--ref-line-height-sm));
39
+ text-align: left;
40
+ box-sizing: border-box;
41
+
42
+ // Implicit icon styling via > i
43
+ > i {
44
+ @include m.fixed-size(16px);
45
+ flex-shrink: 0;
46
+ color: var(--ref-color-grey-100);
47
+
48
+ // Start icon = first child
49
+ &:first-child {
50
+ margin-right: var(--comp-action-dropdown-item-icon-spacing, var(--ref-spacing-xs));
51
+ }
52
+
53
+ // End icon = last child (but not the only child)
54
+ &:last-child:not(:first-child) {
55
+ margin-left: var(--comp-action-dropdown-item-icon-spacing, var(--ref-spacing-xs));
56
+ color: var(--ref-color-grey-60);
57
+ }
58
+ }
59
+
60
+ &:hover {
61
+ background-color: var(--comp-action-dropdown-item-background-color-hover, var(--ref-color-grey-05));
62
+ }
63
+
64
+ &:focus,
65
+ &.focused {
66
+ outline: none;
67
+ background-color: var(--comp-action-dropdown-item-background-color-focused, var(--ref-color-electric-blue-10));
68
+ }
69
+
70
+ &:disabled {
71
+ cursor: not-allowed;
72
+ opacity: 0.4;
73
+
74
+ &:hover {
75
+ background-color: transparent;
76
+ }
77
+ }
78
+
79
+ // Item with description
80
+ &.has-description {
81
+ height: auto;
82
+ min-height: 50px;
83
+ }
84
+
85
+ // Red mode (destructive action)
86
+ &.red-mode {
87
+ color: var(--comp-action-dropdown-item-text-color-red-mode, var(--ref-color-red-100));
88
+
89
+ > i {
90
+ color: inherit;
91
+ }
92
+
93
+ &:hover {
94
+ background-color: var(--comp-action-dropdown-item-background-color-red-mode-hover, var(--ref-color-red-10));
95
+ }
96
+
97
+ &:focus,
98
+ &.focused {
99
+ background-color: var(--comp-action-dropdown-item-background-color-red-mode-focused, var(--ref-color-red-10));
100
+ }
101
+ }
102
+
103
+ // Feature lock
104
+ &.feature-lock {
105
+ > i:last-child {
106
+ color: var(--ref-color-purple-100);
107
+ }
108
+
109
+ &:hover {
110
+ background-color: var(--comp-action-dropdown-item-background-color-feature-lock-hover, var(--ref-color-purple-10));
111
+ }
112
+
113
+ &:focus,
114
+ &.focused {
115
+ background-color: var(--comp-action-dropdown-item-background-color-feature-lock-focused, var(--ref-color-purple-10));
116
+ }
117
+ }
118
+
119
+ // Badge within dropdown item
120
+ .ap-badge {
121
+ flex-shrink: 0;
122
+ }
123
+ }
124
+
125
+ // Text container
126
+ .ap-action-dropdown-item-text {
127
+ display: flex;
128
+ flex-direction: column;
129
+ flex: 1;
130
+ min-width: 0;
131
+ gap: var(--ref-spacing-xxxs);
132
+ }
133
+
134
+ // Label container
135
+ .ap-action-dropdown-item-label-container {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: var(--comp-action-dropdown-item-label-spacing, var(--ref-spacing-xs));
139
+ @include m.truncate;
140
+ }
141
+
142
+ // Label
143
+ .ap-action-dropdown-item-label {
144
+ @include m.truncate;
145
+
146
+ &.bold {
147
+ font-weight: var(--ref-font-weight-bold);
148
+ }
149
+ }
150
+
151
+ // Description
152
+ .ap-action-dropdown-item-description {
153
+ color: var(--comp-action-dropdown-item-description-color, var(--ref-color-grey-60));
154
+ font-size: var(--comp-action-dropdown-item-description-size, var(--ref-font-size-xs));
155
+ line-height: var(--comp-action-dropdown-item-description-line-height, var(--ref-line-height-xs));
156
+ }
157
+
158
+ // Divider
159
+ .ap-action-dropdown-divider {
160
+ height: 1px;
161
+ background-color: var(--comp-action-dropdown-divider-color, var(--ref-color-grey-10));
162
+ margin: var(--comp-action-dropdown-divider-margin, var(--ref-spacing-xxs) 0);
163
+ }
@@ -0,0 +1,236 @@
1
+ // Agorapulse Avatar Styles
2
+ @use 'mixins' as m;
3
+
4
+ .ap-avatar {
5
+ --ap-avatar-size: 40px;
6
+ --ap-avatar-border-radius: 100%;
7
+ --ap-avatar-initials-size: 14px;
8
+ --ap-avatar-symbol-size: 20px;
9
+ --ap-avatar-network-size: 16px;
10
+ --ap-avatar-online-icon-size: 10px;
11
+
12
+ display: flex;
13
+ justify-content: center;
14
+ align-items: center;
15
+ @include m.fixed-size(var(--ap-avatar-size));
16
+ box-sizing: border-box;
17
+ position: relative;
18
+ border-radius: var(--ap-avatar-border-radius);
19
+ background: var(--comp-avatar-background-color);
20
+ box-shadow: var(--comp-avatar-background-shadow);
21
+ // Size variants
22
+ &.size-16 {
23
+ --ap-avatar-size: 16px;
24
+ --ap-avatar-initials-size: 8px;
25
+ --ap-avatar-symbol-size: 8px;
26
+ --ap-avatar-network-size: 8px;
27
+ --ap-avatar-online-icon-size: 6px;
28
+ }
29
+
30
+ &.size-24 {
31
+ --ap-avatar-size: 24px;
32
+ --ap-avatar-initials-size: 12px;
33
+ --ap-avatar-symbol-size: 12px;
34
+ --ap-avatar-network-size: 12px;
35
+ --ap-avatar-online-icon-size: 6px;
36
+ }
37
+
38
+ &.size-32 {
39
+ --ap-avatar-size: 32px;
40
+ --ap-avatar-initials-size: 16px;
41
+ --ap-avatar-symbol-size: 16px;
42
+ --ap-avatar-network-size: 12px;
43
+ --ap-avatar-online-icon-size: 8px;
44
+ }
45
+
46
+ &.size-36 {
47
+ --ap-avatar-size: 36px;
48
+ --ap-avatar-initials-size: 16px;
49
+ --ap-avatar-symbol-size: 18px;
50
+ --ap-avatar-network-size: 16px;
51
+ --ap-avatar-online-icon-size: 8px;
52
+ }
53
+
54
+ &.size-40 {
55
+ --ap-avatar-size: 40px;
56
+ --ap-avatar-initials-size: 20px;
57
+ --ap-avatar-symbol-size: 20px;
58
+ --ap-avatar-network-size: 16px;
59
+ --ap-avatar-online-icon-size: 12px;
60
+ }
61
+
62
+ &.size-48 {
63
+ --ap-avatar-size: 48px;
64
+ --ap-avatar-initials-size: 24px;
65
+ --ap-avatar-symbol-size: 24px;
66
+ --ap-avatar-network-size: 16px;
67
+ --ap-avatar-online-icon-size: 12px;
68
+ }
69
+
70
+ &.size-56 {
71
+ --ap-avatar-size: 56px;
72
+ --ap-avatar-initials-size: 28px;
73
+ --ap-avatar-symbol-size: 28px;
74
+ --ap-avatar-network-size: 16px;
75
+ --ap-avatar-online-icon-size: 16px;
76
+ }
77
+
78
+ // Square variant
79
+ &.square {
80
+ --ap-avatar-border-radius: var(--sys-border-radius-sm);
81
+ }
82
+
83
+ // Image — implicit > img
84
+ > img {
85
+ position: absolute;
86
+ inset: 0;
87
+ width: 100%;
88
+ height: 100%;
89
+ object-fit: cover;
90
+ border-radius: var(--ap-avatar-border-radius);
91
+ }
92
+
93
+ // Initials
94
+ > .ap-avatar-initials {
95
+ font-weight: var(--comp-avatar-initials-weight);
96
+ font-size: var(--ap-avatar-initials-size);
97
+ font-family: 'Averta', sans-serif;
98
+ color: var(--comp-avatar-initials-color);
99
+ text-transform: uppercase;
100
+ user-select: none;
101
+ }
102
+
103
+ // Symbol/icon — implicit > i
104
+ > i {
105
+ color: var(--comp-avatar-symbol-color);
106
+ width: var(--ap-avatar-symbol-size);
107
+ height: var(--ap-avatar-symbol-size);
108
+ }
109
+
110
+ // Big network variant — network icon fills the full avatar
111
+ &.big {
112
+ background: none;
113
+ box-shadow: none;
114
+ overflow: hidden;
115
+
116
+ > i {
117
+ color: unset;
118
+ width: 100%;
119
+ height: 100%;
120
+ font-size: var(--ap-avatar-size);
121
+ }
122
+ }
123
+
124
+ // Online indicator — via ::after pseudo-element when .online class is present
125
+ &.online::after {
126
+ content: '';
127
+ position: absolute;
128
+ bottom: 0;
129
+ right: 0;
130
+ @include m.fixed-size(var(--ap-avatar-online-icon-size));
131
+ border-radius: 100%;
132
+ border: 1px solid var(--comp-avatar-online-border-color);
133
+ background: var(--comp-avatar-online-background);
134
+ box-sizing: border-box;
135
+ }
136
+ }
137
+
138
+ // Network overlay badge
139
+ .ap-avatar-network {
140
+ position: absolute;
141
+ bottom: 0;
142
+ right: 0;
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ @include m.fixed-size(var(--ap-avatar-network-size));
147
+ overflow: hidden;
148
+ box-sizing: border-box;
149
+ box-shadow: var(--comp-avatar-background-shadow);
150
+ border-radius: 100%; // round by default (facebook, twitter, youtube…)
151
+
152
+ // Shape inferred from icon child
153
+ &:has(.ap-icon-instagram-official, .ap-icon-instagram) {
154
+ border-radius: 28%;
155
+ }
156
+
157
+ &:has(.ap-icon-linkedin-official, .ap-icon-linkedin) {
158
+ border-radius: 6%;
159
+ }
160
+
161
+ &:has(.ap-icon-google, .ap-icon-meta) {
162
+ box-shadow: none;
163
+ border-radius: 0;
164
+ }
165
+
166
+ > i {
167
+ font-size: var(--ap-avatar-network-size);
168
+ width: var(--ap-avatar-network-size);
169
+ height: var(--ap-avatar-network-size);
170
+
171
+ // Monochrome icon fallback colors (when using ap-icon-{network} instead of -official)
172
+ &.ap-icon-facebook { color: var(--ref-color-facebook-100); }
173
+ &.ap-icon-instagram { color: var(--ref-color-instagram-100); }
174
+ &.ap-icon-linkedin { color: var(--ref-color-linkedin-100); }
175
+ &.ap-icon-youtube { color: var(--ref-color-youtube-100); }
176
+ }
177
+ }
178
+
179
+ // Avatar group container — uses row-reverse for correct z-stacking (first avatar on top)
180
+ // DOM order is reversed from visual order
181
+ .ap-avatar-group {
182
+ display: inline-flex;
183
+ flex-direction: row-reverse;
184
+ align-items: center;
185
+ padding-left: 2px; // compensate overlap offset
186
+
187
+ .ap-avatar,
188
+ .ap-avatar-group-overflow {
189
+ margin-inline-start: -2px;
190
+ cursor: default;
191
+ }
192
+
193
+ // Size variants set overflow counter dimensions
194
+ &.size-16 .ap-avatar-group-overflow {
195
+ width: 16px;
196
+ height: 16px;
197
+ font-size: 8px;
198
+ }
199
+
200
+ &.size-32 .ap-avatar-group-overflow {
201
+ width: 32px;
202
+ height: 32px;
203
+ font-size: 12px;
204
+ }
205
+ }
206
+
207
+ // Overflow counter badge
208
+ .ap-avatar-group-overflow {
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ background-color: var(--ref-color-grey-10);
213
+ border-radius: 24px;
214
+ transition: background-color var(--ref-animation-short);
215
+ width: 24px;
216
+ height: 24px;
217
+ font-family: var(--ref-font-family);
218
+ font-weight: 700;
219
+ font-size: 10px;
220
+ color: var(--ref-color-grey-80);
221
+ line-height: 1em;
222
+
223
+ &:hover {
224
+ background-color: var(--ref-color-grey-20);
225
+ }
226
+
227
+ &:active {
228
+ background-color: var(--ref-color-grey-40);
229
+ }
230
+
231
+ &:focus-visible {
232
+ background-color: var(--ref-color-grey-20);
233
+ outline: 3px solid var(--ref-color-electric-blue-100);
234
+ outline-offset: 1px;
235
+ }
236
+ }
@@ -0,0 +1,28 @@
1
+ // Agorapulse Badge Styles
2
+
3
+ .ap-badge {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ padding: 0 var(--comp-badge-padding-right) 0 var(--comp-badge-padding-left);
8
+ font-weight: var(--comp-badge-text-style-font-weight);
9
+ font-family: var(--comp-badge-text-style-font-family);
10
+ line-height: var(--comp-badge-text-style-line-height);
11
+ font-size: var(--comp-badge-text-style-size);
12
+ height: var(--comp-badge-height);
13
+ max-height: var(--comp-badge-height);
14
+ border-radius: 2px;
15
+ white-space: nowrap;
16
+ box-sizing: border-box;
17
+
18
+ &.blue {
19
+ background-color: var(--comp-badge-blue-background-color);
20
+ color: var(--comp-badge-blue-color);
21
+ }
22
+
23
+ &.orange {
24
+ text-transform: uppercase;
25
+ background-color: var(--comp-badge-orange-background-color);
26
+ color: var(--comp-badge-orange-color);
27
+ }
28
+ }