@agorapulse/ui-theme 20.1.19 → 20.1.21

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 (72) hide show
  1. package/agorapulse-ui-theme-20.1.21.tgz +0 -0
  2. package/assets/desktop_variables.css +10 -0
  3. package/assets/mobile_variables.css +10 -0
  4. package/assets/style/_tooltip.scss +6 -1
  5. package/assets/style/css-ui/_accordion.scss +54 -0
  6. package/assets/style/css-ui/_action-dropdown.scss +163 -0
  7. package/assets/style/css-ui/_avatar-group.scss +61 -0
  8. package/assets/style/css-ui/_avatar.scss +183 -0
  9. package/assets/style/css-ui/{badge.css → _badge.scss} +10 -12
  10. package/assets/style/css-ui/_button.scss +258 -0
  11. package/assets/style/css-ui/_card.scss +17 -0
  12. package/assets/style/css-ui/_checkbox.scss +164 -0
  13. package/assets/style/css-ui/_counter.scss +76 -0
  14. package/assets/style/css-ui/_datepicker.scss +307 -0
  15. package/assets/style/css-ui/_dialog.scss +74 -0
  16. package/assets/style/css-ui/_dot-stepper.scss +68 -0
  17. package/assets/style/{_helpers.scss → css-ui/_helpers.scss} +14 -13
  18. package/assets/style/css-ui/_icon-button.scss +162 -0
  19. package/assets/style/css-ui/_infobox.scss +154 -0
  20. package/assets/style/css-ui/_input.scss +129 -0
  21. package/assets/style/css-ui/_label.scss +95 -0
  22. package/assets/style/css-ui/_link.scss +86 -0
  23. package/assets/style/css-ui/_list-panel.scss +73 -0
  24. package/assets/style/css-ui/_loader.scss +173 -0
  25. package/assets/style/css-ui/_mixins.scss +50 -0
  26. package/assets/style/css-ui/_pagination.scss +177 -0
  27. package/assets/style/css-ui/_radio-card.scss +200 -0
  28. package/assets/style/css-ui/_radio.scss +107 -0
  29. package/assets/style/css-ui/{select.css → _select.scss} +290 -298
  30. package/assets/style/css-ui/_selection-dropdown.scss +183 -0
  31. package/assets/style/css-ui/_snackbar.scss +161 -0
  32. package/assets/style/css-ui/_split-button.scss +74 -0
  33. package/assets/style/css-ui/_status.scss +71 -0
  34. package/assets/style/css-ui/_stepper.scss +113 -0
  35. package/assets/style/css-ui/_table.scss +325 -0
  36. package/assets/style/css-ui/_tabs.scss +182 -0
  37. package/assets/style/css-ui/_tag.scss +169 -0
  38. package/assets/style/css-ui/_textarea.scss +121 -0
  39. package/assets/style/css-ui/_toggle.scss +132 -0
  40. package/assets/style/css-ui/_tooltip.scss +122 -0
  41. package/assets/style/{_mat-typography.scss → css-ui/_typography.scss} +34 -26
  42. package/assets/style/css-ui/font-face.css +43 -0
  43. package/assets/style/css-ui/index.css +4907 -27
  44. package/assets/style/css-ui/index.css.map +1 -0
  45. package/assets/style/css-ui/index.scss +39 -0
  46. package/assets/style/theme.scss +9 -2
  47. package/package.json +17 -2
  48. package/src/tokens/system/icon.json +33 -0
  49. package/agorapulse-ui-theme-20.1.19.tgz +0 -0
  50. package/assets/style/css-ui/action-dropdown.css +0 -172
  51. package/assets/style/css-ui/avatar.css +0 -199
  52. package/assets/style/css-ui/button.css +0 -446
  53. package/assets/style/css-ui/checkbox.css +0 -170
  54. package/assets/style/css-ui/counter.css +0 -73
  55. package/assets/style/css-ui/datepicker.css +0 -294
  56. package/assets/style/css-ui/dot-stepper.css +0 -67
  57. package/assets/style/css-ui/infobox.css +0 -163
  58. package/assets/style/css-ui/input.css +0 -119
  59. package/assets/style/css-ui/label.css +0 -67
  60. package/assets/style/css-ui/link.css +0 -92
  61. package/assets/style/css-ui/loader.css +0 -247
  62. package/assets/style/css-ui/pagination.css +0 -161
  63. package/assets/style/css-ui/radio.css +0 -109
  64. package/assets/style/css-ui/snackbar.css +0 -166
  65. package/assets/style/css-ui/status.css +0 -87
  66. package/assets/style/css-ui/stepper.css +0 -123
  67. package/assets/style/css-ui/table.css +0 -305
  68. package/assets/style/css-ui/tabs.css +0 -188
  69. package/assets/style/css-ui/tag.css +0 -171
  70. package/assets/style/css-ui/textarea.css +0 -158
  71. package/assets/style/css-ui/toggle.css +0 -161
  72. package/assets/style/css-ui/tooltip.css +0 -228
@@ -0,0 +1,50 @@
1
+ // Shared mixins for css-ui components
2
+
3
+ // Focus ring standard
4
+ @mixin focus-ring {
5
+ outline: 2px solid var(--ref-color-electric-blue-100);
6
+ outline-offset: 1px;
7
+ }
8
+
9
+ // Focus ring with 3px width (checkbox, radio)
10
+ @mixin focus-ring-3px {
11
+ outline: 3px solid var(--ref-color-electric-blue-100);
12
+ outline-offset: 1px;
13
+ }
14
+
15
+ // Visually hidden, accessible to screen readers
16
+ @mixin sr-only {
17
+ position: absolute;
18
+ clip: rect(0, 0, 0, 0);
19
+ width: 1px;
20
+ height: 1px;
21
+ margin: -1px;
22
+ padding: 0;
23
+ border: 0;
24
+ overflow: hidden;
25
+ }
26
+
27
+ // Truncate text with ellipsis
28
+ @mixin truncate {
29
+ white-space: nowrap;
30
+ overflow: hidden;
31
+ text-overflow: ellipsis;
32
+ }
33
+
34
+ // Fixed size (width + height + min + max)
35
+ @mixin fixed-size($size) {
36
+ width: $size;
37
+ height: $size;
38
+ min-width: $size;
39
+ min-height: $size;
40
+ max-width: $size;
41
+ max-height: $size;
42
+ }
43
+
44
+ // Text-style shorthand
45
+ @mixin text-style($name) {
46
+ font-family: var(--sys-text-style-#{$name}-font-family);
47
+ font-size: var(--sys-text-style-#{$name}-size);
48
+ font-weight: var(--sys-text-style-#{$name}-weight);
49
+ line-height: var(--sys-text-style-#{$name}-line-height);
50
+ }
@@ -0,0 +1,177 @@
1
+ // Agorapulse Pagination Styles
2
+ @use 'mixins' as m;
3
+ @use 'ui-symbol/icons/build/ap-icons-data' as icons;
4
+
5
+ .ap-pagination {
6
+ --paginator-button-size: 36px;
7
+
8
+ display: flex;
9
+ align-items: center;
10
+ gap: var(--ref-spacing-lg);
11
+ width: 100%;
12
+ justify-content: space-between;
13
+
14
+ // Item count display — implicit > span
15
+ > span {
16
+ font-weight: var(--ref-font-weight-regular);
17
+ font-size: var(--ref-font-size-sm);
18
+ line-height: var(--ref-line-height-sm);
19
+ color: var(--ref-color-grey-60);
20
+ white-space: nowrap;
21
+ }
22
+ }
23
+
24
+ // Page numbers container (includes nav buttons + page buttons)
25
+ .ap-pagination-pages {
26
+ display: flex;
27
+ align-items: center;
28
+ justify-self: center;
29
+ color: var(--ref-color-electric-blue-100);
30
+ gap: var(--ref-spacing-xxxs);
31
+ }
32
+
33
+ // Navigation buttons (prev/next)
34
+ .ap-pagination-nav {
35
+ display: grid;
36
+ place-content: center;
37
+ @include m.fixed-size(var(--paginator-button-size));
38
+ border-radius: var(--ref-border-radius-sm);
39
+ background: transparent;
40
+ border: none;
41
+ color: var(--ref-color-electric-blue-100);
42
+ padding: 0;
43
+
44
+ &:not(:disabled) {
45
+ cursor: pointer;
46
+ }
47
+
48
+ &:disabled {
49
+ pointer-events: none;
50
+ color: var(--ref-color-grey-40);
51
+ }
52
+
53
+ &:hover:not(:disabled) {
54
+ background: var(--ref-color-electric-blue-10);
55
+ }
56
+
57
+ &:active:not(:disabled) {
58
+ background: var(--ref-color-electric-blue-20);
59
+ }
60
+
61
+ @media (hover: hover) {
62
+ &:focus:not(:disabled):not(:active) {
63
+ @include m.focus-ring;
64
+ }
65
+ }
66
+
67
+ // Nav icon — implicit > i
68
+ > i {
69
+ width: 16px;
70
+ height: 16px;
71
+ }
72
+
73
+ // Arrow icon via ::before (no <i> needed)
74
+ &::before {
75
+ @include icons.icon-base;
76
+ width: 16px;
77
+ height: 16px;
78
+ }
79
+ }
80
+
81
+ // Arrow direction by position — first nav = left, last nav = right
82
+ .ap-pagination-pages > .ap-pagination-nav:first-child::before {
83
+ @include icons.icon('arrow-left');
84
+ }
85
+
86
+ .ap-pagination-pages > .ap-pagination-nav:last-child::before {
87
+ @include icons.icon('arrow-right');
88
+ }
89
+
90
+ // Individual page button
91
+ .ap-pagination-page {
92
+ @include m.fixed-size(var(--paginator-button-size));
93
+ border-radius: var(--ref-border-radius-sm);
94
+ background: transparent;
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ border: none;
99
+ box-sizing: border-box;
100
+ color: var(--ref-color-electric-blue-100);
101
+ font-family: var(--ref-font-family);
102
+ font-weight: var(--ref-font-weight-regular);
103
+ font-size: var(--ref-font-size-sm);
104
+ line-height: var(--ref-line-height-sm);
105
+ padding: 0;
106
+
107
+ &:hover:not(.active) {
108
+ cursor: pointer;
109
+ background-color: var(--ref-color-electric-blue-10);
110
+ }
111
+
112
+ @media (hover: hover) {
113
+ &:focus:not(.disabled):not(:active) {
114
+ @include m.focus-ring;
115
+ }
116
+ }
117
+
118
+ &:active:not(.active) {
119
+ background-color: var(--ref-color-electric-blue-20);
120
+ }
121
+
122
+ &.active {
123
+ background-color: var(--ref-color-electric-blue-100);
124
+ color: var(--ref-color-white);
125
+ cursor: default;
126
+ }
127
+ }
128
+
129
+ // Ellipsis — text injected via ::before (no inner text needed)
130
+ .ap-pagination-ellipsis {
131
+ display: inline-block;
132
+ width: var(--paginator-button-size);
133
+ line-height: var(--paginator-button-size);
134
+ text-align: center;
135
+ color: var(--ref-color-grey-60);
136
+ font-family: var(--ref-font-family);
137
+ font-size: var(--ref-font-size-sm);
138
+
139
+ &::before {
140
+ content: '...';
141
+ }
142
+ }
143
+
144
+ // Go to page section
145
+ .ap-pagination-goto {
146
+ display: flex;
147
+ align-items: center;
148
+ gap: var(--ref-spacing-xs);
149
+
150
+ // Label — implicit > span
151
+ > span {
152
+ font-weight: var(--ref-font-weight-standard);
153
+ font-size: var(--ref-font-size-sm);
154
+ line-height: var(--ref-line-height-sm);
155
+ color: var(--ref-color-grey-60);
156
+ white-space: nowrap;
157
+ }
158
+
159
+ // Input — implicit > input
160
+ > input {
161
+ box-sizing: border-box;
162
+ background: var(--ref-color-white);
163
+ width: 48px;
164
+ height: var(--paginator-button-size);
165
+ border-radius: var(--ref-border-radius-sm);
166
+ border: 1px solid var(--ref-color-grey-20);
167
+ padding: var(--ref-spacing-xs) var(--ref-spacing-sm);
168
+ font-family: var(--ref-font-family);
169
+ font-size: var(--ref-font-size-sm);
170
+ text-align: center;
171
+
172
+ &:focus {
173
+ outline: none;
174
+ border-color: var(--ref-color-electric-blue-100);
175
+ }
176
+ }
177
+ }
@@ -0,0 +1,200 @@
1
+ // Agorapulse Radio Button Card Styles
2
+ @use 'mixins' as m;
3
+
4
+ .ap-radio-card {
5
+ display: flex;
6
+ align-items: flex-start;
7
+ gap: var(--ref-spacing-xxs);
8
+ cursor: pointer;
9
+ position: relative;
10
+ box-sizing: border-box;
11
+
12
+ // Hide native radio input (accessible)
13
+ > input[type='radio'] {
14
+ @include m.sr-only;
15
+ }
16
+
17
+ // Radio indicator — ::before pseudo-element (no empty span needed)
18
+ &::before {
19
+ content: '';
20
+ @include m.fixed-size(16px);
21
+ border-radius: 100%;
22
+ border: 1px solid var(--ref-color-grey-60);
23
+ background: var(--ref-color-electric-blue-100);
24
+ box-shadow: inset 0 0 0 16px var(--ref-color-white);
25
+ transition: box-shadow var(--comp-radio-transition-duration);
26
+ flex-shrink: 0;
27
+ box-sizing: border-box;
28
+ margin-top: 1px;
29
+ }
30
+
31
+ // Indicator: checked
32
+ &:has(input:checked)::before {
33
+ border-color: var(--ref-color-electric-blue-100);
34
+ box-shadow: inset 0 0 0 3px var(--ref-color-white);
35
+ }
36
+
37
+ // Indicator: disabled
38
+ &:has(input:disabled)::before {
39
+ box-shadow: inset 0 0 0 16px var(--ref-color-grey-10);
40
+ border-color: var(--ref-color-grey-40);
41
+ opacity: 0.6;
42
+ }
43
+
44
+ // Indicator: disabled + checked
45
+ &:has(input:disabled:checked)::before {
46
+ background: var(--ref-color-grey-40);
47
+ box-shadow: inset 0 0 0 3px var(--ref-color-grey-10);
48
+ border-color: var(--ref-color-grey-40);
49
+ }
50
+
51
+ // Indicator: hover (not disabled, not locked)
52
+ &:hover:not(:has(input:disabled)):not(.locked)::before {
53
+ border-color: var(--ref-color-grey-80);
54
+ }
55
+
56
+ // Indicator: hover + checked
57
+ &:hover:not(:has(input:disabled)):not(.locked):has(input:checked)::before {
58
+ border-color: var(--ref-color-electric-blue-100);
59
+ }
60
+
61
+ // Indicator: error — red fill (dot) + border, compound selectors override checked/hover
62
+ &.error::before,
63
+ &.error:has(input:checked)::before {
64
+ border-color: var(--ref-color-red-100);
65
+ background: var(--ref-color-red-100);
66
+ }
67
+
68
+ &.error:hover:not(:has(input:disabled))::before {
69
+ border-color: var(--ref-color-red-60);
70
+ }
71
+
72
+ // Locked — hide indicator, lock icon takes its place
73
+ &.locked::before {
74
+ display: none;
75
+ }
76
+
77
+ // Disabled state — cursor + content opacity (matches Angular --radio-content-opacity: 0.6)
78
+ &:has(input:disabled) {
79
+ cursor: default;
80
+
81
+ > :is(span, div) {
82
+ opacity: 0.6;
83
+ }
84
+ }
85
+
86
+ // Body — direct div child (structured content area)
87
+ > div {
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: var(--ref-spacing-xxxs);
91
+ flex: 1;
92
+ min-width: 0;
93
+ }
94
+
95
+ // Description — span inside body div
96
+ > div > span {
97
+ font-family: var(--ref-font-family);
98
+ font-size: var(--ref-font-size-sm);
99
+ line-height: var(--ref-font-line-height-sm);
100
+ color: var(--ref-color-grey-80);
101
+ }
102
+
103
+ // Link inside body
104
+ > div > a {
105
+ display: block;
106
+ }
107
+
108
+ // Card mode
109
+ &.card {
110
+ padding: var(--ref-spacing-xs);
111
+ border: 1px solid var(--ref-color-grey-20);
112
+ border-radius: var(--ref-border-radius-md);
113
+ background: var(--ref-color-white);
114
+ transition: border-color 0.2s ease-in-out;
115
+
116
+ &:hover:not(:has(input:disabled)):not(.locked) {
117
+ border-color: var(--ref-color-grey-40);
118
+ }
119
+
120
+ // Checked card
121
+ &:has(input:checked) {
122
+ border-color: var(--ref-color-electric-blue-100);
123
+ }
124
+
125
+ // Disabled card (not locked — locked has own styles)
126
+ &:has(input:disabled):not(.locked) {
127
+ border-color: var(--ref-color-grey-20);
128
+ }
129
+
130
+ // Error card — compound selectors override :has(input:checked) specificity
131
+ &.error,
132
+ &.error:has(input:checked) {
133
+ border-color: var(--ref-color-red-100);
134
+ }
135
+
136
+ &.error:hover:not(:has(input:disabled)) {
137
+ border-color: var(--ref-color-red-60);
138
+ }
139
+
140
+ // Locked card
141
+ &.locked {
142
+ cursor: default;
143
+ background: var(--ref-color-purple-10);
144
+ border-color: var(--ref-color-purple-20);
145
+
146
+ &:hover {
147
+ border-color: var(--ref-color-purple-40);
148
+ }
149
+
150
+ // Lock icon replaces radio indicator
151
+ > i.ap-icon-feature-lock {
152
+ color: var(--ref-color-purple-100);
153
+ @include m.fixed-size(16px);
154
+ flex-shrink: 0;
155
+ margin-top: 1px;
156
+ }
157
+ }
158
+ }
159
+
160
+ // Focus ring when radio is focused
161
+ &:has(input:focus-visible) {
162
+ @include m.focus-ring-3px;
163
+ }
164
+ }
165
+
166
+ // Header row (icon + title + badge + info)
167
+ .ap-radio-card-header {
168
+ display: flex;
169
+ align-items: flex-start;
170
+ gap: var(--ref-spacing-xxxs);
171
+
172
+ > i:first-child {
173
+ @include m.fixed-size(16px);
174
+ flex-shrink: 0;
175
+ margin-top: 1px; // center 16px icon with 18px title line-height
176
+ }
177
+ }
178
+
179
+ // Title text
180
+ .ap-radio-card-title {
181
+ font-family: var(--ref-font-family);
182
+ font-size: var(--ref-font-size-sm);
183
+ font-weight: var(--ref-font-weight-bold);
184
+ line-height: var(--ref-font-line-height-sm);
185
+ color: var(--ref-color-grey-100);
186
+ flex: 1;
187
+ min-width: 0;
188
+ }
189
+
190
+ // Info icon (tooltip anchor in header)
191
+ .ap-radio-card-info {
192
+ @include m.fixed-size(16px);
193
+ color: var(--ref-color-grey-60);
194
+ flex-shrink: 0;
195
+ cursor: pointer;
196
+
197
+ &:hover {
198
+ color: var(--ref-color-grey-80);
199
+ }
200
+ }
@@ -0,0 +1,107 @@
1
+ // Agorapulse Radio Styles
2
+ @use 'mixins' as m;
3
+
4
+ .ap-radio-container {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: var(--ref-spacing-xxs);
8
+ cursor: pointer;
9
+
10
+ // Hide native radio input (accessible)
11
+ > input[type='radio'] {
12
+ @include m.sr-only;
13
+ }
14
+
15
+
16
+ // Disabled container
17
+ &:has(input:disabled) {
18
+ cursor: default;
19
+ }
20
+
21
+ // Radio indicator — ::before pseudo-element (no empty span needed)
22
+ &::before {
23
+ content: '';
24
+ @include m.fixed-size(16px);
25
+ border-radius: 100%;
26
+ border: 1px solid var(--ref-color-grey-60);
27
+ background: var(--ref-color-electric-blue-100);
28
+ box-shadow: inset 0 0 0 16px var(--ref-color-white);
29
+ transition: box-shadow var(--comp-radio-transition-duration);
30
+ flex-shrink: 0;
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ // Indicator: checked
35
+ &:has(input:checked)::before {
36
+ border-color: var(--ref-color-electric-blue-100);
37
+ box-shadow: inset 0 0 0 3px var(--ref-color-white);
38
+ }
39
+
40
+ // Indicator: disabled
41
+ &:has(input:disabled)::before {
42
+ box-shadow: inset 0 0 0 16px var(--ref-color-grey-10);
43
+ border-color: var(--ref-color-grey-20);
44
+ }
45
+
46
+ // Indicator: disabled + checked
47
+ &:has(input:disabled:checked)::before {
48
+ background: var(--ref-color-grey-40);
49
+ box-shadow: inset 0 0 0 3px var(--ref-color-grey-10);
50
+ border-color: var(--ref-color-grey-20);
51
+ }
52
+
53
+ // Indicator: hover (not disabled)
54
+ &:hover:not(:has(input:disabled))::before {
55
+ border-color: var(--ref-color-grey-80);
56
+ }
57
+
58
+ // Indicator: hover + checked (keep blue)
59
+ &:hover:not(:has(input:disabled)):has(input:checked)::before {
60
+ border-color: var(--ref-color-electric-blue-100);
61
+ }
62
+
63
+ // Focus ring on indicator (keyboard only)
64
+ &:has(input:focus-visible)::before {
65
+ outline: 3px solid var(--ref-color-electric-blue-100);
66
+ outline-offset: 1px;
67
+ border-color: var(--ref-color-grey-80);
68
+ }
69
+
70
+ // Focus + checked
71
+ &:has(input:focus-visible:checked)::before {
72
+ border-color: var(--ref-color-electric-blue-100);
73
+ }
74
+
75
+ // Error state — compound selectors to override :has(input:checked) specificity
76
+ &.error::before,
77
+ &.error:has(input:checked)::before {
78
+ border-color: var(--ref-color-red-100);
79
+ }
80
+
81
+ &.error:hover:not(:has(input:disabled))::before {
82
+ border-color: var(--ref-color-red-60);
83
+ }
84
+
85
+ &.error:has(input:focus-visible)::before {
86
+ outline-color: var(--ref-color-red-100);
87
+ border-color: var(--ref-color-red-60);
88
+ }
89
+
90
+ // Label — direct span child
91
+ > span {
92
+ display: flex;
93
+ align-items: center;
94
+ @include m.text-style('body');
95
+ color: var(--ref-color-grey-100);
96
+ user-select: none;
97
+
98
+ &:empty {
99
+ display: none;
100
+ }
101
+ }
102
+
103
+ // Label: disabled
104
+ &:has(input:disabled) > span {
105
+ color: var(--ref-color-grey-60);
106
+ }
107
+ }