@agorapulse/ui-theme 20.1.17 → 20.1.19

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.
@@ -0,0 +1,67 @@
1
+ /* Agorapulse Label Styles */
2
+
3
+ .ap-label {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ max-width: 100%;
7
+ background: var(--comp-label-background-color);
8
+ border-radius: var(--comp-label-border-radius);
9
+ padding: 0 var(--comp-label-padding-right) 0 var(--comp-label-padding-left);
10
+ height: var(--comp-label-height);
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ .ap-label.removable {
15
+ gap: var(--comp-label-closable-spacing);
16
+ padding: 0 var(--comp-label-closable-padding-right) 0 var(--ref-spacing-xxs);
17
+ }
18
+
19
+ /* Label content text */
20
+ .ap-label-content {
21
+ color: var(--comp-label-text-color);
22
+ font-family: var(--comp-label-text-style-font-family);
23
+ font-size: var(--comp-label-text-style-size);
24
+ font-weight: var(--comp-label-text-style-font-weight);
25
+ line-height: var(--comp-label-text-style-line-height);
26
+ white-space: nowrap;
27
+ overflow: hidden;
28
+ text-overflow: ellipsis;
29
+ max-width: 180px;
30
+ }
31
+
32
+ /* Close button for removable labels */
33
+ .ap-label-close {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ width: calc(var(--comp-label-height) - 4px);
38
+ height: calc(var(--comp-label-height) - 4px);
39
+ min-width: calc(var(--comp-label-height) - 4px);
40
+ border: none;
41
+ background: transparent;
42
+ border-radius: 50%;
43
+ cursor: pointer;
44
+ padding: 0;
45
+ color: var(--comp-label-text-color);
46
+ transition: background-color 0.15s;
47
+ }
48
+
49
+ .ap-label-close:hover {
50
+ background: var(--ref-color-electric-blue-40);
51
+ }
52
+
53
+ .ap-label-close:active {
54
+ background: var(--ref-color-electric-blue-60);
55
+ }
56
+
57
+ .ap-label-close-icon {
58
+ width: 12px;
59
+ height: 12px;
60
+ }
61
+
62
+ /* Label list container */
63
+ .ap-label-list {
64
+ display: flex;
65
+ flex-wrap: wrap;
66
+ gap: var(--ref-spacing-xxs);
67
+ }
@@ -0,0 +1,92 @@
1
+ /* Agorapulse Link Styles */
2
+
3
+ /* Base link styling */
4
+ .ap-link {
5
+ display: inline-flex;
6
+ gap: var(--comp-link-spacing);
7
+ font-family: var(--comp-link-text-font-family);
8
+ font-weight: var(--comp-link-text-font-weight);
9
+ line-height: var(--comp-link-text-line-height);
10
+ font-size: var(--comp-link-text-size);
11
+ align-items: center;
12
+ text-decoration: underline;
13
+ -webkit-tap-highlight-color: transparent;
14
+ cursor: pointer;
15
+ color: var(--comp-link-default-color);
16
+ }
17
+
18
+ /* Size variants */
19
+ .ap-link.small {
20
+ font-family: var(--comp-link-small-text-style-font-family);
21
+ font-weight: var(--comp-link-small-text-style-font-weight);
22
+ line-height: var(--comp-link-small-text-style-line-height);
23
+ font-size: var(--comp-link-small-text-style-size);
24
+ }
25
+
26
+ .ap-link.big {
27
+ font-family: var(--comp-link-big-text-style-font-family);
28
+ font-weight: var(--comp-link-big-text-style-font-weight);
29
+ line-height: var(--comp-link-big-text-style-line-height);
30
+ font-size: var(--comp-link-big-text-style-size);
31
+ }
32
+
33
+ /* Standalone variant (no underline) */
34
+ .ap-link.standalone {
35
+ text-decoration: none;
36
+ font-family: var(--comp-link-standalone-default-text-style-font-family);
37
+ font-weight: var(--comp-link-standalone-default-text-style-font-weight);
38
+ line-height: var(--comp-link-standalone-default-text-style-line-height);
39
+ font-size: var(--comp-link-standalone-default-text-style-size);
40
+ color: var(--comp-link-default-color);
41
+ }
42
+
43
+ .ap-link.standalone.small {
44
+ font-family: var(--comp-link-standalone-small-text-style-font-family);
45
+ font-weight: var(--comp-link-standalone-small-text-style-font-weight);
46
+ line-height: var(--comp-link-standalone-small-text-style-line-height);
47
+ font-size: var(--comp-link-standalone-small-text-style-size);
48
+ }
49
+
50
+ /* Hover state */
51
+ .ap-link:hover {
52
+ color: var(--comp-link-hover-color);
53
+ }
54
+
55
+ /* Active state */
56
+ .ap-link:active:not(:visited):not(.disabled) {
57
+ color: var(--comp-link-clicked-color);
58
+ }
59
+
60
+ /* Visited state (only for non-standalone links) */
61
+ .ap-link:visited:not(.standalone) {
62
+ color: var(--comp-link-visited-color);
63
+ }
64
+
65
+ /* Disabled state */
66
+ .ap-link.disabled,
67
+ .ap-link[aria-disabled='true'] {
68
+ color: var(--comp-link-disabled-color);
69
+ pointer-events: none;
70
+ cursor: default;
71
+ }
72
+
73
+ /* Icon sizing */
74
+ .ap-link-icon {
75
+ min-width: var(--comp-link-icon-size);
76
+ min-height: var(--comp-link-icon-size);
77
+ max-width: var(--comp-link-icon-size);
78
+ max-height: var(--comp-link-icon-size);
79
+ flex-shrink: 0;
80
+ }
81
+
82
+ /* Icon positioning */
83
+ .ap-link.inverse {
84
+ flex-direction: row-reverse;
85
+ }
86
+
87
+ /* Focus state for accessibility */
88
+ .ap-link:focus-visible {
89
+ outline: 2px solid var(--ref-color-electric-blue-100);
90
+ outline-offset: 2px;
91
+ border-radius: 2px;
92
+ }
@@ -0,0 +1,247 @@
1
+ /* Agorapulse Loader Styles */
2
+
3
+ .ap-loader {
4
+ display: inline-block;
5
+ line-height: 0;
6
+ }
7
+
8
+ .ap-loader svg {
9
+ background: transparent;
10
+ }
11
+
12
+ .ap-loader circle {
13
+ fill: transparent;
14
+ stroke-linecap: round;
15
+ transform: rotate(-90deg);
16
+ transform-origin: center;
17
+ }
18
+
19
+ /* Fade circle (background track) */
20
+ .ap-loader circle.fade.blue {
21
+ stroke: var(--ref-color-electric-blue-10);
22
+ }
23
+
24
+ .ap-loader circle.fade.orange {
25
+ stroke: var(--ref-color-orange-40);
26
+ }
27
+
28
+ .ap-loader circle.fade.white {
29
+ stroke: rgba(255, 255, 255, 0.4);
30
+ }
31
+
32
+ .ap-loader circle.fade.grey {
33
+ stroke: var(--ref-color-grey-20);
34
+ }
35
+
36
+ /* Main circle (animated) */
37
+ .ap-loader circle.main.blue {
38
+ stroke: var(--ref-color-electric-blue-100);
39
+ }
40
+
41
+ .ap-loader circle.main.orange {
42
+ stroke: var(--ref-color-orange-100);
43
+ }
44
+
45
+ .ap-loader circle.main.white {
46
+ stroke: #ffffff;
47
+ }
48
+
49
+ .ap-loader circle.main.grey {
50
+ stroke: var(--ref-color-grey-80);
51
+ }
52
+
53
+ /* Size variants with pre-calculated values */
54
+ /* Formula: radius = (diameter - thickness) / 2, circumference = trunc(2 * PI * radius) */
55
+
56
+ /* 16px loader: radius=6.5, circumference=40 */
57
+ .ap-loader.size-16 {
58
+ width: 16px;
59
+ height: 16px;
60
+ }
61
+
62
+ .ap-loader.size-16 circle {
63
+ stroke-width: 3px;
64
+ stroke-dasharray: 40;
65
+ }
66
+
67
+ .ap-loader.size-16 circle.main {
68
+ animation: ap-loader-16 1.5s cubic-bezier(0.42, 0.0, 0.58, 1.0) infinite;
69
+ }
70
+
71
+ .ap-loader.size-16 circle.fade {
72
+ animation: ap-loader-16 1.5s cubic-bezier(0.42, 0.0, 0.78, 1.0) infinite;
73
+ }
74
+
75
+ /* 24px loader: radius=10, circumference=62 */
76
+ .ap-loader.size-24 {
77
+ width: 24px;
78
+ height: 24px;
79
+ }
80
+
81
+ .ap-loader.size-24 circle {
82
+ stroke-width: 4px;
83
+ stroke-dasharray: 62;
84
+ }
85
+
86
+ .ap-loader.size-24 circle.main {
87
+ animation: ap-loader-24 1.5s cubic-bezier(0.42, 0.0, 0.58, 1.0) infinite;
88
+ }
89
+
90
+ .ap-loader.size-24 circle.fade {
91
+ animation: ap-loader-24 1.5s cubic-bezier(0.42, 0.0, 0.78, 1.0) infinite;
92
+ }
93
+
94
+ /* 30px loader: radius=12.5, circumference=78 */
95
+ .ap-loader.size-30 {
96
+ width: 30px;
97
+ height: 30px;
98
+ }
99
+
100
+ .ap-loader.size-30 circle {
101
+ stroke-width: 5px;
102
+ stroke-dasharray: 78;
103
+ }
104
+
105
+ .ap-loader.size-30 circle.main {
106
+ animation: ap-loader-30 1.5s cubic-bezier(0.42, 0.0, 0.58, 1.0) infinite;
107
+ }
108
+
109
+ .ap-loader.size-30 circle.fade {
110
+ animation: ap-loader-30 1.5s cubic-bezier(0.42, 0.0, 0.78, 1.0) infinite;
111
+ }
112
+
113
+ /* 48px loader: radius=20.5, circumference=128 */
114
+ .ap-loader.size-48 {
115
+ width: 48px;
116
+ height: 48px;
117
+ }
118
+
119
+ .ap-loader.size-48 circle {
120
+ stroke-width: 7px;
121
+ stroke-dasharray: 128;
122
+ }
123
+
124
+ .ap-loader.size-48 circle.main {
125
+ animation: ap-loader-48 1.5s cubic-bezier(0.42, 0.0, 0.58, 1.0) infinite;
126
+ }
127
+
128
+ .ap-loader.size-48 circle.fade {
129
+ animation: ap-loader-48 1.5s cubic-bezier(0.42, 0.0, 0.78, 1.0) infinite;
130
+ }
131
+
132
+ /* 60px loader: radius=26, circumference=163 */
133
+ .ap-loader.size-60 {
134
+ width: 60px;
135
+ height: 60px;
136
+ }
137
+
138
+ .ap-loader.size-60 circle {
139
+ stroke-width: 8px;
140
+ stroke-dasharray: 163;
141
+ }
142
+
143
+ .ap-loader.size-60 circle.main {
144
+ animation: ap-loader-60 1.5s cubic-bezier(0.42, 0.0, 0.58, 1.0) infinite;
145
+ }
146
+
147
+ .ap-loader.size-60 circle.fade {
148
+ animation: ap-loader-60 1.5s cubic-bezier(0.42, 0.0, 0.78, 1.0) infinite;
149
+ }
150
+
151
+ /*
152
+ * Animations
153
+ * Base transform: rotate(-90deg) is set on circle element
154
+ * Animation rotates from -90deg (base) to 630deg = 720deg (2 full turns)
155
+ * The stroke-dashoffset goes from full -> 55% -> full (arc grows then shrinks)
156
+ */
157
+
158
+ /* 16px animation - circumference = 40 */
159
+ @keyframes ap-loader-16 {
160
+ 0% {
161
+ stroke-dashoffset: 40;
162
+ }
163
+ 50% {
164
+ stroke-dashoffset: 22;
165
+ }
166
+ 100% {
167
+ stroke-dashoffset: 40;
168
+ transform: rotate(630deg);
169
+ }
170
+ }
171
+
172
+ /* 24px animation - circumference = 62 */
173
+ @keyframes ap-loader-24 {
174
+ 0% {
175
+ stroke-dashoffset: 62;
176
+ }
177
+ 50% {
178
+ stroke-dashoffset: 34;
179
+ }
180
+ 100% {
181
+ stroke-dashoffset: 62;
182
+ transform: rotate(630deg);
183
+ }
184
+ }
185
+
186
+ /* 30px animation - circumference = 78 */
187
+ @keyframes ap-loader-30 {
188
+ 0% {
189
+ stroke-dashoffset: 78;
190
+ }
191
+ 50% {
192
+ stroke-dashoffset: 42;
193
+ }
194
+ 100% {
195
+ stroke-dashoffset: 78;
196
+ transform: rotate(630deg);
197
+ }
198
+ }
199
+
200
+ /* 48px animation - circumference = 128 */
201
+ @keyframes ap-loader-48 {
202
+ 0% {
203
+ stroke-dashoffset: 128;
204
+ }
205
+ 50% {
206
+ stroke-dashoffset: 70;
207
+ }
208
+ 100% {
209
+ stroke-dashoffset: 128;
210
+ transform: rotate(630deg);
211
+ }
212
+ }
213
+
214
+ /* 60px animation - circumference = 163 */
215
+ @keyframes ap-loader-60 {
216
+ 0% {
217
+ stroke-dashoffset: 163;
218
+ }
219
+ 50% {
220
+ stroke-dashoffset: 89;
221
+ }
222
+ 100% {
223
+ stroke-dashoffset: 163;
224
+ transform: rotate(630deg);
225
+ }
226
+ }
227
+
228
+ /* Loader container for centered display */
229
+ .ap-loader-container {
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ }
234
+
235
+ /* Full page loader overlay */
236
+ .ap-loader-overlay {
237
+ position: fixed;
238
+ top: 0;
239
+ left: 0;
240
+ right: 0;
241
+ bottom: 0;
242
+ display: flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ background: rgba(255, 255, 255, 0.8);
246
+ z-index: 9999;
247
+ }
@@ -0,0 +1,161 @@
1
+ /* Agorapulse Pagination Styles */
2
+
3
+ .ap-pagination {
4
+ --paginator-button-size: 36px;
5
+
6
+ display: flex;
7
+ align-items: center;
8
+ gap: var(--ref-spacing-lg);
9
+ width: 100%;
10
+ justify-content: space-between;
11
+ }
12
+
13
+ /* Item count display */
14
+ .ap-pagination-info {
15
+ font-weight: var(--ref-font-weight-regular);
16
+ font-size: var(--ref-font-size-sm);
17
+ line-height: var(--ref-line-height-sm);
18
+ color: var(--ref-color-grey-60);
19
+ white-space: nowrap;
20
+ }
21
+
22
+ /* Navigation buttons (prev/next) */
23
+ .ap-pagination-nav {
24
+ display: grid;
25
+ place-content: center;
26
+ height: var(--paginator-button-size);
27
+ width: var(--paginator-button-size);
28
+ min-height: var(--paginator-button-size);
29
+ min-width: var(--paginator-button-size);
30
+ max-height: var(--paginator-button-size);
31
+ max-width: var(--paginator-button-size);
32
+ border-radius: var(--ref-border-radius-sm);
33
+ background: transparent;
34
+ border: none;
35
+ color: var(--ref-color-electric-blue-100);
36
+ cursor: pointer;
37
+ padding: 0;
38
+ }
39
+
40
+ .ap-pagination-nav:disabled {
41
+ pointer-events: none;
42
+ color: var(--ref-color-grey-40);
43
+ }
44
+
45
+ .ap-pagination-nav:hover:not(:disabled) {
46
+ background: var(--ref-color-electric-blue-10);
47
+ }
48
+
49
+ .ap-pagination-nav:active:not(:disabled) {
50
+ background: var(--ref-color-electric-blue-20);
51
+ }
52
+
53
+ @media (hover: hover) {
54
+ .ap-pagination-nav:focus:not(:disabled):not(:active) {
55
+ outline: 2px solid var(--ref-color-electric-blue-100);
56
+ outline-offset: 1px;
57
+ }
58
+ }
59
+
60
+ .ap-pagination-nav-icon {
61
+ width: 16px;
62
+ height: 16px;
63
+ }
64
+
65
+ /* Page numbers container */
66
+ .ap-pagination-pages {
67
+ display: flex;
68
+ justify-self: center;
69
+ color: var(--ref-color-electric-blue-100);
70
+ gap: var(--ref-spacing-xxxs);
71
+ }
72
+
73
+ /* Individual page button */
74
+ .ap-pagination-page {
75
+ width: var(--paginator-button-size);
76
+ height: var(--paginator-button-size);
77
+ max-width: var(--paginator-button-size);
78
+ max-height: var(--paginator-button-size);
79
+ min-width: var(--paginator-button-size);
80
+ min-height: var(--paginator-button-size);
81
+ border-radius: var(--ref-border-radius-sm);
82
+ background: transparent;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ border: none;
87
+ box-sizing: border-box;
88
+ cursor: pointer;
89
+ color: var(--ref-color-electric-blue-100);
90
+ font-family: var(--ref-font-family);
91
+ font-weight: var(--ref-font-weight-regular);
92
+ font-size: var(--ref-font-size-sm);
93
+ line-height: var(--ref-line-height-sm);
94
+ padding: 0;
95
+ }
96
+
97
+ .ap-pagination-page:hover:not(.active) {
98
+ background-color: var(--ref-color-electric-blue-10);
99
+ }
100
+
101
+ @media (hover: hover) {
102
+ .ap-pagination-page:focus:not(.disabled):not(:active) {
103
+ outline: 2px solid var(--ref-color-electric-blue-100);
104
+ outline-offset: 1px;
105
+ }
106
+ }
107
+
108
+ .ap-pagination-page:active:not(.active) {
109
+ background-color: var(--ref-color-electric-blue-20);
110
+ }
111
+
112
+ .ap-pagination-page.active {
113
+ background-color: var(--ref-color-electric-blue-100);
114
+ color: var(--ref-color-white);
115
+ cursor: default;
116
+ }
117
+
118
+ /* Ellipsis */
119
+ .ap-pagination-ellipsis {
120
+ display: inline-flex;
121
+ align-items: center;
122
+ justify-content: center;
123
+ width: var(--paginator-button-size);
124
+ height: var(--paginator-button-size);
125
+ color: var(--ref-color-grey-60);
126
+ font-family: var(--ref-font-family);
127
+ font-size: var(--ref-font-size-sm);
128
+ }
129
+
130
+ /* Go to page input */
131
+ .ap-pagination-goto {
132
+ display: flex;
133
+ align-items: center;
134
+ gap: var(--ref-spacing-xs);
135
+ }
136
+
137
+ .ap-pagination-goto-label {
138
+ font-weight: var(--ref-font-weight-standard);
139
+ font-size: var(--ref-font-size-sm);
140
+ line-height: var(--ref-line-height-sm);
141
+ color: var(--ref-color-grey-60);
142
+ white-space: nowrap;
143
+ }
144
+
145
+ .ap-pagination-goto-input {
146
+ box-sizing: border-box;
147
+ background: var(--ref-color-white);
148
+ width: 48px;
149
+ height: var(--paginator-button-size);
150
+ border-radius: var(--ref-border-radius-sm);
151
+ border: 1px solid var(--ref-color-grey-20);
152
+ padding: var(--ref-spacing-xs) var(--ref-spacing-sm);
153
+ font-family: var(--ref-font-family);
154
+ font-size: var(--ref-font-size-sm);
155
+ text-align: center;
156
+ }
157
+
158
+ .ap-pagination-goto-input:focus {
159
+ outline: none;
160
+ border-color: var(--ref-color-electric-blue-100);
161
+ }
@@ -0,0 +1,109 @@
1
+ /* Agorapulse Radio Styles */
2
+
3
+ .ap-radio-container {
4
+ display: flex;
5
+ align-items: center;
6
+ gap: var(--ref-spacing-xxs);
7
+ cursor: pointer;
8
+ }
9
+
10
+ .ap-radio-container:has(input:disabled) {
11
+ cursor: default;
12
+ }
13
+
14
+ /* Label positioning */
15
+ .ap-radio-container.label-left {
16
+ flex-direction: row-reverse;
17
+ }
18
+
19
+ /* Native radio input (visually hidden but accessible) */
20
+ .ap-radio-input {
21
+ transform: scale(0);
22
+ position: absolute;
23
+ }
24
+
25
+ /* Checked state */
26
+ .ap-radio-input:checked ~ .ap-radio-button {
27
+ border-color: var(--ref-color-electric-blue-100);
28
+ box-shadow: inset 0 0 0 3px var(--ref-color-white);
29
+ }
30
+
31
+ .ap-radio-input:checked ~ .ap-radio-button.disabled {
32
+ background: var(--ref-color-grey-40);
33
+ box-shadow: inset 0 0 0 3px var(--ref-color-grey-10);
34
+ }
35
+
36
+ .ap-radio-input:checked:focus ~ .ap-radio-button {
37
+ border-color: var(--ref-color-electric-blue-100);
38
+ }
39
+
40
+ /* Disabled state */
41
+ .ap-radio-input:disabled ~ .ap-radio-button {
42
+ box-shadow: inset 0 0 0 16px var(--ref-color-grey-10);
43
+ border-color: var(--ref-color-grey-20);
44
+ }
45
+
46
+ .ap-radio-input:disabled ~ .ap-radio-label {
47
+ color: var(--ref-color-grey-60);
48
+ }
49
+
50
+ /* Focus state */
51
+ @media (hover: hover) {
52
+ .ap-radio-input:focus ~ .ap-radio-button {
53
+ outline: 3px solid var(--ref-color-electric-blue-100);
54
+ border-color: var(--ref-color-grey-80);
55
+ outline-offset: 1px;
56
+ }
57
+ }
58
+
59
+ /* Custom radio button visual */
60
+ .ap-radio-button {
61
+ width: 16px;
62
+ height: 16px;
63
+ min-width: 16px;
64
+ min-height: 16px;
65
+ border-radius: 100%;
66
+ border: 1px solid var(--ref-color-grey-60);
67
+ background: var(--ref-color-electric-blue-100);
68
+ box-shadow: inset 0 0 0 16px var(--ref-color-white);
69
+ transition: box-shadow var(--comp-radio-transition-duration);
70
+ flex-shrink: 0;
71
+ }
72
+
73
+ .ap-radio-container:hover:not(:has(input:disabled)) .ap-radio-button {
74
+ border-color: var(--ref-color-grey-80);
75
+ }
76
+
77
+ /* Label styling */
78
+ .ap-radio-label {
79
+ display: flex;
80
+ align-items: center;
81
+ font-family: var(--sys-text-style-body-font-family);
82
+ font-size: var(--sys-text-style-body-size);
83
+ font-weight: var(--sys-text-style-body-weight);
84
+ line-height: var(--sys-text-style-body-line-height);
85
+ color: var(--ref-color-grey-100);
86
+ user-select: none;
87
+ }
88
+
89
+ .ap-radio-label:empty {
90
+ display: none;
91
+ }
92
+
93
+ .ap-radio-label.disabled {
94
+ color: var(--ref-color-grey-60);
95
+ }
96
+
97
+ /* Error state (for form validation) */
98
+ .ap-radio-container.error .ap-radio-button {
99
+ border-color: var(--ref-color-red-100);
100
+ }
101
+
102
+ .ap-radio-container.error .ap-radio-button:hover {
103
+ border-color: var(--ref-color-red-60);
104
+ }
105
+
106
+ .ap-radio-container.error .ap-radio-input:focus ~ .ap-radio-button {
107
+ outline-color: var(--ref-color-red-100);
108
+ border-color: var(--ref-color-red-60);
109
+ }