@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,188 @@
1
+ /* Agorapulse Tabs Styles */
2
+
3
+ .ap-tabs {
4
+ display: flex;
5
+ flex-direction: column;
6
+ width: 100%;
7
+ }
8
+
9
+ /* Tabs navigation bar */
10
+ .ap-tabs-nav {
11
+ display: flex;
12
+ align-items: center;
13
+ border-bottom: 1px solid var(--comp-tabs-border-color);
14
+ position: relative;
15
+ }
16
+
17
+ /* Individual tab button */
18
+ .ap-tabs-tab {
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ background: transparent;
23
+ border: none;
24
+ cursor: pointer;
25
+ font-family: var(--comp-tabs-text-font-family);
26
+ text-align: center;
27
+ position: relative;
28
+ white-space: nowrap;
29
+ padding: var(--comp-tabs-tab-padding);
30
+ font-size: var(--comp-tabs-tab-font-size);
31
+ line-height: var(--comp-tabs-tab-line-height);
32
+ min-height: var(--comp-tabs-tab-min-height);
33
+ color: var(--comp-tabs-tab-text-color-default);
34
+ font-weight: var(--ref-font-weight-regular);
35
+ }
36
+
37
+ /* Tab content wrapper */
38
+ .ap-tabs-tab-content {
39
+ display: flex;
40
+ flex-direction: column;
41
+ align-items: center;
42
+ gap: var(--comp-tabs-tab-content-gap);
43
+ }
44
+
45
+ /* Tab header (icon + label) */
46
+ .ap-tabs-tab-header {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: var(--comp-tabs-tab-header-gap);
50
+ }
51
+
52
+ /* Tab label */
53
+ .ap-tabs-tab-label {
54
+ font-weight: inherit;
55
+ font-size: inherit;
56
+ line-height: inherit;
57
+ }
58
+
59
+ /* Tab icon */
60
+ .ap-tabs-tab-icon {
61
+ width: 16px;
62
+ height: 16px;
63
+ flex-shrink: 0;
64
+ }
65
+
66
+ /* Feature lock icon */
67
+ .ap-tabs-tab-lock {
68
+ width: 16px;
69
+ height: 16px;
70
+ color: var(--comp-tabs-tab-feature-lock-color);
71
+ }
72
+
73
+ /* Hover state */
74
+ .ap-tabs-tab:hover:not(:disabled):not(.active) {
75
+ background-color: var(--comp-tabs-tab-hover-background-color);
76
+ }
77
+
78
+ /* Focus state */
79
+ .ap-tabs-tab:focus {
80
+ outline: none;
81
+ }
82
+
83
+ .ap-tabs-tab:focus-visible:not(.active) {
84
+ outline: none;
85
+ box-shadow: inset 0 0 0 2px var(--comp-tabs-tab-focus-color);
86
+ border-radius: var(--comp-tabs-tab-focus-border-radius);
87
+ background-color: var(--comp-tabs-tab-focus-background-color);
88
+ }
89
+
90
+ /* Active/pressed state */
91
+ .ap-tabs-tab:active:not(:disabled):not(.active) {
92
+ background-color: var(--comp-tabs-tab-active-background-color);
93
+ }
94
+
95
+ /* Disabled state */
96
+ .ap-tabs-tab:disabled,
97
+ .ap-tabs-tab.disabled {
98
+ cursor: not-allowed;
99
+ color: var(--comp-tabs-tab-text-color-disabled);
100
+ opacity: 0.5;
101
+ }
102
+
103
+ /* Active tab */
104
+ .ap-tabs-tab.active {
105
+ color: var(--comp-tabs-tab-text-color-active);
106
+ text-shadow: 0.5px 0 0 currentColor;
107
+ }
108
+
109
+ .ap-tabs-tab.active:focus-visible {
110
+ outline: none;
111
+ box-shadow: inset 0 0 0 2px var(--comp-tabs-tab-focus-color);
112
+ border-radius: var(--comp-tabs-tab-focus-border-radius);
113
+ }
114
+
115
+ /* Feature locked tab */
116
+ .ap-tabs-tab.feature-locked:hover:not(:disabled):not(.active) {
117
+ background-color: var(--comp-tabs-tab-feature-locked-hover-background-color);
118
+ }
119
+
120
+ .ap-tabs-tab.feature-locked:focus-visible:not(.active) {
121
+ color: var(--comp-tabs-tab-text-color-feature-locked-focus);
122
+ background-color: var(--comp-tabs-tab-feature-locked-focus-background-color);
123
+ }
124
+
125
+ .ap-tabs-tab.feature-locked:active:not(:disabled):not(.active) {
126
+ background-color: var(--comp-tabs-tab-feature-locked-active-background-color);
127
+ }
128
+
129
+ .ap-tabs-tab.feature-locked.active {
130
+ color: var(--comp-tabs-tab-text-color-feature-locked-active);
131
+ text-shadow: 0.5px 0 0 currentColor;
132
+ }
133
+
134
+ .ap-tabs-tab.feature-locked.active:focus-visible {
135
+ outline: none;
136
+ box-shadow: inset 0 0 0 2px var(--comp-tabs-tab-focus-color);
137
+ border-radius: var(--comp-tabs-tab-focus-border-radius);
138
+ }
139
+
140
+ /* Active indicator (underline) */
141
+ .ap-tabs-indicator {
142
+ position: absolute;
143
+ bottom: -1px;
144
+ height: 4px;
145
+ background-color: var(--comp-tabs-tab-active-indicator-color);
146
+ transition:
147
+ transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
148
+ width 0.3s cubic-bezier(0.4, 0, 0.2, 1),
149
+ background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
150
+ transform-origin: left;
151
+ }
152
+
153
+ /* Feature locked indicator */
154
+ .ap-tabs-indicator.feature-locked {
155
+ background-color: var(--comp-tabs-tab-feature-locked-indicator-color);
156
+ }
157
+
158
+ /* Tab content panel */
159
+ .ap-tabs-content {
160
+ flex: 1;
161
+ width: 100%;
162
+ }
163
+
164
+ /* Tab panel (individual content area) */
165
+ .ap-tabs-panel {
166
+ display: none;
167
+ padding: var(--ref-spacing-md) 0;
168
+ }
169
+
170
+ .ap-tabs-panel.active {
171
+ display: block;
172
+ }
173
+
174
+ /* Scrollable tabs container */
175
+ .ap-tabs-nav.scrollable {
176
+ overflow-x: auto;
177
+ scrollbar-width: none;
178
+ -ms-overflow-style: none;
179
+ }
180
+
181
+ .ap-tabs-nav.scrollable::-webkit-scrollbar {
182
+ display: none;
183
+ }
184
+
185
+ /* Full width tabs */
186
+ .ap-tabs.full-width .ap-tabs-tab {
187
+ flex: 1;
188
+ }
@@ -0,0 +1,171 @@
1
+ /* Agorapulse Tag Styles */
2
+
3
+ .ap-tag {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ height: var(--comp-tag-height);
8
+ max-height: var(--comp-tag-height);
9
+ box-sizing: border-box;
10
+ border-width: 1px;
11
+ border-style: solid;
12
+ padding: 0 var(--comp-tag-padding-right) 0 var(--comp-tag-padding-left);
13
+ border-radius: var(--comp-tag-border-radius);
14
+ gap: var(--ref-spacing-xxxs);
15
+ vertical-align: middle;
16
+ }
17
+
18
+ /* Clearable/Add variant - with close button */
19
+ .ap-tag.clearable,
20
+ .ap-tag.add {
21
+ padding: 0 calc(var(--comp-tag-closable-padding-right) - 1px) 0 var(--comp-tag-padding-left);
22
+ }
23
+
24
+ /* Mini size */
25
+ .ap-tag.mini {
26
+ height: var(--comp-tag-mini-height);
27
+ padding: 0 var(--comp-tag-mini-padding-right) 0 var(--comp-tag-mini-padding-left);
28
+ }
29
+
30
+ /* Tag text */
31
+ .ap-tag-text {
32
+ max-width: 180px;
33
+ white-space: nowrap;
34
+ overflow: hidden;
35
+ text-overflow: ellipsis;
36
+ font-size: var(--comp-tag-text-style-size);
37
+ line-height: var(--comp-tag-text-style-line-height);
38
+ font-weight: var(--comp-tag-text-style-font-weight);
39
+ font-family: var(--comp-tag-text-style-font-family);
40
+ }
41
+
42
+ /* Tag avatar */
43
+ .ap-tag-avatar {
44
+ --avatar-size: 16px;
45
+ min-width: var(--avatar-size);
46
+ width: var(--avatar-size);
47
+ max-width: var(--avatar-size);
48
+ min-height: var(--avatar-size);
49
+ height: var(--avatar-size);
50
+ max-height: var(--avatar-size);
51
+ border-radius: 100%;
52
+ overflow: hidden;
53
+ }
54
+
55
+ .ap-tag-avatar img {
56
+ width: 100%;
57
+ height: 100%;
58
+ object-fit: cover;
59
+ }
60
+
61
+ /* Tag action button (close/add) */
62
+ .ap-tag-button {
63
+ display: flex;
64
+ justify-content: center;
65
+ align-items: center;
66
+ width: var(--comp-close-button-size);
67
+ max-width: var(--comp-close-button-size);
68
+ height: var(--comp-close-button-size);
69
+ max-height: var(--comp-close-button-size);
70
+ border-radius: 50%;
71
+ background: transparent;
72
+ border: none;
73
+ padding: var(--comp-close-button-padding);
74
+ outline: none;
75
+ cursor: pointer;
76
+ transition: background-color 0.25s;
77
+ }
78
+
79
+ @media (hover: hover) {
80
+ .ap-tag-button:focus:not(:disabled):not(:active) {
81
+ outline: 2px solid var(--ref-color-electric-blue-100);
82
+ outline-offset: 1px;
83
+ }
84
+ }
85
+
86
+ .ap-tag-button:hover {
87
+ background: var(--comp-close-button-hover-background);
88
+ }
89
+
90
+ .ap-tag-button:active {
91
+ background: var(--comp-close-button-active-background);
92
+ outline: none;
93
+ }
94
+
95
+ .ap-tag-button-icon {
96
+ width: 12px;
97
+ height: 12px;
98
+ }
99
+
100
+ /* Blue variant */
101
+ .ap-tag.blue {
102
+ background-color: var(--comp-tag-blue-background-color);
103
+ border-color: var(--comp-tag-blue-border-color);
104
+ color: var(--comp-tag-blue-text-color);
105
+ }
106
+
107
+ .ap-tag.blue .ap-tag-button {
108
+ color: var(--comp-tag-blue-icon-color);
109
+ }
110
+
111
+ /* Grey variant */
112
+ .ap-tag.grey {
113
+ background-color: var(--comp-tag-grey-background-color);
114
+ border-color: var(--comp-tag-grey-border-color);
115
+ color: var(--comp-tag-grey-text-color);
116
+ }
117
+
118
+ .ap-tag.grey .ap-tag-button {
119
+ color: var(--comp-tag-grey-icon-color);
120
+ }
121
+
122
+ /* Tag Orange variant */
123
+ .ap-tag.tagOrange {
124
+ background-color: var(--comp-tag-tag-orange-background-color);
125
+ border-color: var(--comp-tag-tag-orange-border-color);
126
+ color: var(--comp-tag-tag-orange-text-color);
127
+ }
128
+
129
+ .ap-tag.tagOrange .ap-tag-button {
130
+ color: var(--comp-tag-tag-orange-icon-color);
131
+ }
132
+
133
+ /* Menthol variant */
134
+ .ap-tag.menthol {
135
+ background-color: var(--comp-tag-menthol-background-color);
136
+ border-color: var(--comp-tag-menthol-border-color);
137
+ color: var(--comp-tag-menthol-text-color);
138
+ }
139
+
140
+ .ap-tag.menthol .ap-tag-button {
141
+ color: var(--comp-tag-menthol-icon-color);
142
+ }
143
+
144
+ /* Green variant */
145
+ .ap-tag.green {
146
+ background-color: var(--comp-tag-green-background-color);
147
+ border-color: var(--comp-tag-green-border-color);
148
+ color: var(--comp-tag-green-text-color);
149
+ }
150
+
151
+ .ap-tag.green .ap-tag-button {
152
+ color: var(--comp-tag-green-icon-color);
153
+ }
154
+
155
+ /* Red variant */
156
+ .ap-tag.red {
157
+ background-color: var(--comp-tag-red-background-color);
158
+ border-color: var(--comp-tag-red-border-color);
159
+ color: var(--comp-tag-red-text-color);
160
+ }
161
+
162
+ .ap-tag.red .ap-tag-button {
163
+ color: var(--comp-tag-red-icon-color);
164
+ }
165
+
166
+ /* Tag list container */
167
+ .ap-tag-list {
168
+ display: flex;
169
+ flex-wrap: wrap;
170
+ gap: var(--ref-spacing-xxs);
171
+ }
@@ -0,0 +1,158 @@
1
+ /* Agorapulse Textarea Styles */
2
+
3
+ /* Textarea container */
4
+ .ap-textarea-field {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--ref-spacing-xxs);
8
+ }
9
+
10
+ /* Textarea label */
11
+ .ap-textarea-label {
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: var(--comp-forms-label-spacing-vertical);
15
+ font-size: var(--comp-forms-label-size);
16
+ font-weight: var(--comp-forms-label-font-weight);
17
+ line-height: var(--comp-forms-label-line-height);
18
+ font-family: var(--comp-forms-label-font-family);
19
+ color: var(--comp-forms-label-text-color);
20
+ }
21
+
22
+ /* Label description */
23
+ .ap-textarea-description {
24
+ font-size: var(--comp-forms-label-description-text-size);
25
+ font-weight: var(--comp-forms-label-description-text-font-weight);
26
+ line-height: var(--comp-forms-label-description-text-line-height);
27
+ font-family: var(--comp-forms-label-description-text-font-family);
28
+ color: var(--comp-forms-label-description-text-color);
29
+ }
30
+
31
+ /* Textarea element */
32
+ .ap-textarea {
33
+ resize: none;
34
+ width: 100%;
35
+ min-width: 256px;
36
+ border: 1px solid var(--comp-input-border-default-color);
37
+ background-color: var(--ref-color-white);
38
+ padding: var(--ref-spacing-xxs) var(--ref-spacing-xs);
39
+ border-radius: var(--ref-border-radius-sm);
40
+ font-family: var(--comp-input-text-font-family);
41
+ font-size: var(--comp-input-text-size);
42
+ font-weight: var(--comp-input-text-font-weight);
43
+ color: var(--comp-input-text-default-color);
44
+ box-sizing: border-box;
45
+ outline: none;
46
+ }
47
+
48
+ /* Placeholder */
49
+ .ap-textarea::placeholder {
50
+ color: var(--comp-input-text-placeholder-color);
51
+ }
52
+
53
+ /* Hover state */
54
+ .ap-textarea:hover:not(:focus):not(:disabled):not(.invalid):not(.valid) {
55
+ border-color: var(--comp-input-border-hover-color);
56
+ }
57
+
58
+ /* Focus state */
59
+ .ap-textarea:focus:not(:disabled) {
60
+ border-color: var(--comp-input-border-focused-color);
61
+ }
62
+
63
+ /* Focus visible for accessibility */
64
+ .ap-textarea:focus-visible {
65
+ outline: 2px solid var(--ref-color-electric-blue-100);
66
+ outline-offset: 1px;
67
+ }
68
+
69
+ /* Disabled state */
70
+ .ap-textarea:disabled {
71
+ background-color: var(--comp-input-fill-disabled-color);
72
+ color: var(--comp-input-text-disabled-color);
73
+ cursor: default;
74
+ }
75
+
76
+ /* Invalid/Error state */
77
+ .ap-textarea.invalid,
78
+ .ap-textarea-field.invalid .ap-textarea {
79
+ border-color: var(--comp-input-border-error-color);
80
+ }
81
+
82
+ /* Valid/Success state */
83
+ .ap-textarea.valid,
84
+ .ap-textarea-field.valid .ap-textarea {
85
+ border-color: var(--comp-input-border-success-color);
86
+ }
87
+
88
+ /* Resizable variant */
89
+ .ap-textarea.resizable {
90
+ resize: vertical;
91
+ }
92
+
93
+ /* Horizontal resize */
94
+ .ap-textarea.resizable-horizontal {
95
+ resize: horizontal;
96
+ }
97
+
98
+ /* Both directions resize */
99
+ .ap-textarea.resizable-both {
100
+ resize: both;
101
+ }
102
+
103
+ /* Auto-resize variant (works with JS) */
104
+ .ap-textarea.autoresize {
105
+ overflow: hidden;
106
+ }
107
+
108
+ /* Textarea message (error/success) */
109
+ .ap-textarea-message {
110
+ font-size: var(--sys-text-style-body-size);
111
+ font-weight: var(--sys-text-style-body-weight);
112
+ line-height: var(--sys-text-style-body-line-height);
113
+ font-family: var(--sys-text-style-body-font-family);
114
+ margin: 0;
115
+ display: flex;
116
+ align-items: center;
117
+ gap: var(--ref-spacing-xxxs);
118
+ }
119
+
120
+ .ap-textarea-message.error {
121
+ color: var(--comp-forms-status-text-error-color);
122
+ }
123
+
124
+ .ap-textarea-message.success {
125
+ color: var(--comp-forms-status-text-success-color);
126
+ }
127
+
128
+ /* Message icons */
129
+ .ap-textarea-message-icon {
130
+ width: 16px;
131
+ height: 16px;
132
+ flex-shrink: 0;
133
+ }
134
+
135
+ .ap-textarea-message.error .ap-textarea-message-icon {
136
+ color: var(--comp-forms-status-icon-error-color);
137
+ }
138
+
139
+ .ap-textarea-message.success .ap-textarea-message-icon {
140
+ color: var(--comp-forms-status-icon-success-color);
141
+ }
142
+
143
+ /* Character count */
144
+ .ap-textarea-counter {
145
+ font-size: var(--sys-text-style-caption-size);
146
+ font-weight: var(--sys-text-style-caption-weight);
147
+ line-height: var(--sys-text-style-caption-line-height);
148
+ color: var(--ref-color-grey-80);
149
+ text-align: right;
150
+ }
151
+
152
+ .ap-textarea-counter.warning {
153
+ color: var(--ref-color-orange-100);
154
+ }
155
+
156
+ .ap-textarea-counter.error {
157
+ color: var(--ref-color-red-100);
158
+ }
@@ -0,0 +1,161 @@
1
+ /* Agorapulse Toggle Styles */
2
+
3
+ .ap-toggle-container {
4
+ display: flex;
5
+ align-items: center;
6
+ gap: var(--ref-spacing-xxs);
7
+ cursor: pointer;
8
+ font-family: var(--sys-text-style-body-font-family);
9
+ font-size: var(--sys-text-style-body-size);
10
+ line-height: var(--sys-text-style-body-line-height);
11
+ color: var(--ref-color-grey-100);
12
+ }
13
+
14
+ .ap-toggle-container:has(input:disabled) {
15
+ cursor: default;
16
+ }
17
+
18
+ /* Label positioning */
19
+ .ap-toggle-container.label-left {
20
+ flex-direction: row-reverse;
21
+ }
22
+
23
+ /* Native checkbox input (visually hidden but accessible) */
24
+ .ap-toggle-input {
25
+ border: 0;
26
+ clip: rect(0 0 0 0);
27
+ height: 1px;
28
+ margin: -1px;
29
+ overflow: hidden;
30
+ padding: 0;
31
+ position: absolute;
32
+ width: 1px;
33
+ }
34
+
35
+ /* Focus state */
36
+ @media (hover: hover) {
37
+ .ap-toggle-input:focus:not(:disabled) ~ .ap-toggle-switch {
38
+ outline: 2px solid var(--ref-color-electric-blue-100);
39
+ outline-offset: 1px;
40
+ }
41
+ }
42
+
43
+ /* Toggle switch visual */
44
+ .ap-toggle-switch {
45
+ box-sizing: content-box;
46
+ position: relative;
47
+ display: flex;
48
+ align-items: center;
49
+ padding: 2px;
50
+ width: 28px;
51
+ height: 12px;
52
+ border-radius: 16px;
53
+ background: var(--ref-color-grey-60);
54
+ transition: background-color 0.25s;
55
+ flex-shrink: 0;
56
+ }
57
+
58
+ /* Hover state for unchecked */
59
+ .ap-toggle-container:hover:not(:has(input:disabled)) .ap-toggle-switch {
60
+ background: var(--ref-color-grey-80);
61
+ }
62
+
63
+ /* Checked state */
64
+ .ap-toggle-input:checked ~ .ap-toggle-switch {
65
+ background: var(--ref-color-electric-blue-100);
66
+ }
67
+
68
+ /* Hover state for checked */
69
+ .ap-toggle-container:hover:not(:has(input:disabled)) .ap-toggle-input:checked ~ .ap-toggle-switch {
70
+ background: var(--ref-color-electric-blue-80);
71
+ }
72
+
73
+ /* Active state for checked */
74
+ .ap-toggle-container:active:not(:has(input:disabled)) .ap-toggle-input:checked ~ .ap-toggle-switch {
75
+ background: var(--ref-color-electric-blue-60);
76
+ }
77
+
78
+ /* Disabled state */
79
+ .ap-toggle-switch.disabled,
80
+ .ap-toggle-input:disabled ~ .ap-toggle-switch {
81
+ background: var(--ref-color-grey-20);
82
+ }
83
+
84
+ /* Toggle knob */
85
+ .ap-toggle-knob {
86
+ width: 12px;
87
+ height: 12px;
88
+ background: var(--ref-color-white);
89
+ border-radius: 100%;
90
+ position: absolute;
91
+ transition: left 0.25s ease-in-out;
92
+ left: 2px;
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ }
97
+
98
+ /* Knob position when checked */
99
+ .ap-toggle-input:checked ~ .ap-toggle-switch .ap-toggle-knob {
100
+ left: 18px;
101
+ }
102
+
103
+ /* Toggle icon */
104
+ .ap-toggle-icon {
105
+ width: 10px;
106
+ height: 10px;
107
+ min-width: 10px;
108
+ max-width: 10px;
109
+ max-height: 10px;
110
+ position: absolute;
111
+ color: var(--ref-color-grey-80);
112
+ }
113
+
114
+ /* Hide check icon by default, show close icon */
115
+ .ap-toggle-icon-check {
116
+ display: none;
117
+ }
118
+
119
+ .ap-toggle-icon-close {
120
+ display: block;
121
+ }
122
+
123
+ /* When checked: hide close icon, show check icon */
124
+ .ap-toggle-input:checked ~ .ap-toggle-switch .ap-toggle-icon-close {
125
+ display: none;
126
+ }
127
+
128
+ .ap-toggle-input:checked ~ .ap-toggle-switch .ap-toggle-icon-check {
129
+ display: block;
130
+ }
131
+
132
+ /* Icon color when checked */
133
+ .ap-toggle-input:checked ~ .ap-toggle-switch .ap-toggle-icon {
134
+ color: var(--ref-color-electric-blue-150);
135
+ }
136
+
137
+ /* Icon color when disabled */
138
+ .ap-toggle-switch.disabled .ap-toggle-icon,
139
+ .ap-toggle-input:disabled ~ .ap-toggle-switch .ap-toggle-icon {
140
+ color: var(--ref-color-grey-40);
141
+ }
142
+
143
+ /* Label styling */
144
+ .ap-toggle-label {
145
+ display: flex;
146
+ align-items: center;
147
+ font-family: var(--sys-text-style-body-font-family);
148
+ font-size: var(--sys-text-style-body-size);
149
+ font-weight: var(--sys-text-style-body-weight);
150
+ line-height: var(--sys-text-style-body-line-height);
151
+ color: var(--ref-color-grey-100);
152
+ user-select: none;
153
+ }
154
+
155
+ .ap-toggle-label:empty {
156
+ display: none;
157
+ }
158
+
159
+ .ap-toggle-label.disabled {
160
+ color: var(--ref-color-grey-60);
161
+ }