@agorapulse/ui-theme 20.1.19 → 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 (66) 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/_tooltip.scss +6 -1
  5. package/assets/style/css-ui/_action-dropdown.scss +163 -0
  6. package/assets/style/css-ui/_avatar.scss +236 -0
  7. package/assets/style/css-ui/{badge.css → _badge.scss} +10 -12
  8. package/assets/style/css-ui/_button.scss +261 -0
  9. package/assets/style/css-ui/_checkbox.scss +168 -0
  10. package/assets/style/css-ui/_counter.scss +76 -0
  11. package/assets/style/css-ui/_datepicker.scss +307 -0
  12. package/assets/style/css-ui/_dot-stepper.scss +67 -0
  13. package/assets/style/{_helpers.scss → css-ui/_helpers.scss} +14 -13
  14. package/assets/style/css-ui/_icon-button.scss +162 -0
  15. package/assets/style/css-ui/_infobox.scss +154 -0
  16. package/assets/style/css-ui/_input.scss +133 -0
  17. package/assets/style/css-ui/_label.scss +89 -0
  18. package/assets/style/css-ui/_link.scss +91 -0
  19. package/assets/style/css-ui/_loader.scss +178 -0
  20. package/assets/style/css-ui/_mixins.scss +50 -0
  21. package/assets/style/css-ui/_pagination.scss +177 -0
  22. package/assets/style/css-ui/_radio-card.scss +200 -0
  23. package/assets/style/css-ui/_radio.scss +111 -0
  24. package/assets/style/css-ui/{select.css → _select.scss} +290 -298
  25. package/assets/style/css-ui/_selection-dropdown.scss +183 -0
  26. package/assets/style/css-ui/_snackbar.scss +166 -0
  27. package/assets/style/css-ui/_split-button.scss +79 -0
  28. package/assets/style/css-ui/_status.scss +71 -0
  29. package/assets/style/css-ui/_stepper.scss +127 -0
  30. package/assets/style/css-ui/_table.scss +325 -0
  31. package/assets/style/css-ui/_tabs.scss +182 -0
  32. package/assets/style/css-ui/_tag.scss +169 -0
  33. package/assets/style/css-ui/_textarea.scss +121 -0
  34. package/assets/style/css-ui/_toggle.scss +136 -0
  35. package/assets/style/css-ui/_tooltip.scss +122 -0
  36. package/assets/style/{_mat-typography.scss → css-ui/_typography.scss} +34 -26
  37. package/assets/style/css-ui/index.css +4723 -27
  38. package/assets/style/css-ui/index.css.map +1 -0
  39. package/assets/style/css-ui/index.scss +34 -0
  40. package/assets/style/theme.scss +9 -2
  41. package/package.json +13 -2
  42. package/src/tokens/system/icon.json +33 -0
  43. package/agorapulse-ui-theme-20.1.19.tgz +0 -0
  44. package/assets/style/css-ui/action-dropdown.css +0 -172
  45. package/assets/style/css-ui/avatar.css +0 -199
  46. package/assets/style/css-ui/button.css +0 -446
  47. package/assets/style/css-ui/checkbox.css +0 -170
  48. package/assets/style/css-ui/counter.css +0 -73
  49. package/assets/style/css-ui/datepicker.css +0 -294
  50. package/assets/style/css-ui/dot-stepper.css +0 -67
  51. package/assets/style/css-ui/infobox.css +0 -163
  52. package/assets/style/css-ui/input.css +0 -119
  53. package/assets/style/css-ui/label.css +0 -67
  54. package/assets/style/css-ui/link.css +0 -92
  55. package/assets/style/css-ui/loader.css +0 -247
  56. package/assets/style/css-ui/pagination.css +0 -161
  57. package/assets/style/css-ui/radio.css +0 -109
  58. package/assets/style/css-ui/snackbar.css +0 -166
  59. package/assets/style/css-ui/status.css +0 -87
  60. package/assets/style/css-ui/stepper.css +0 -123
  61. package/assets/style/css-ui/table.css +0 -305
  62. package/assets/style/css-ui/tabs.css +0 -188
  63. package/assets/style/css-ui/tag.css +0 -171
  64. package/assets/style/css-ui/textarea.css +0 -158
  65. package/assets/style/css-ui/toggle.css +0 -161
  66. package/assets/style/css-ui/tooltip.css +0 -228
@@ -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,111 @@
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
+ // Label-left mode (row-reverse puts ::before on right, span on left)
16
+ &.label-left {
17
+ flex-direction: row-reverse;
18
+ }
19
+
20
+ // Disabled container
21
+ &:has(input:disabled) {
22
+ cursor: default;
23
+ }
24
+
25
+ // Radio indicator — ::before pseudo-element (no empty span needed)
26
+ &::before {
27
+ content: '';
28
+ @include m.fixed-size(16px);
29
+ border-radius: 100%;
30
+ border: 1px solid var(--ref-color-grey-60);
31
+ background: var(--ref-color-electric-blue-100);
32
+ box-shadow: inset 0 0 0 16px var(--ref-color-white);
33
+ transition: box-shadow var(--comp-radio-transition-duration);
34
+ flex-shrink: 0;
35
+ box-sizing: border-box;
36
+ }
37
+
38
+ // Indicator: checked
39
+ &:has(input:checked)::before {
40
+ border-color: var(--ref-color-electric-blue-100);
41
+ box-shadow: inset 0 0 0 3px var(--ref-color-white);
42
+ }
43
+
44
+ // Indicator: disabled
45
+ &:has(input:disabled)::before {
46
+ box-shadow: inset 0 0 0 16px var(--ref-color-grey-10);
47
+ border-color: var(--ref-color-grey-20);
48
+ }
49
+
50
+ // Indicator: disabled + checked
51
+ &:has(input:disabled:checked)::before {
52
+ background: var(--ref-color-grey-40);
53
+ box-shadow: inset 0 0 0 3px var(--ref-color-grey-10);
54
+ border-color: var(--ref-color-grey-20);
55
+ }
56
+
57
+ // Indicator: hover (not disabled)
58
+ &:hover:not(:has(input:disabled))::before {
59
+ border-color: var(--ref-color-grey-80);
60
+ }
61
+
62
+ // Indicator: hover + checked (keep blue)
63
+ &:hover:not(:has(input:disabled)):has(input:checked)::before {
64
+ border-color: var(--ref-color-electric-blue-100);
65
+ }
66
+
67
+ // Focus ring on indicator (keyboard only)
68
+ &:has(input:focus-visible)::before {
69
+ outline: 3px solid var(--ref-color-electric-blue-100);
70
+ outline-offset: 1px;
71
+ border-color: var(--ref-color-grey-80);
72
+ }
73
+
74
+ // Focus + checked
75
+ &:has(input:focus-visible:checked)::before {
76
+ border-color: var(--ref-color-electric-blue-100);
77
+ }
78
+
79
+ // Error state — compound selectors to override :has(input:checked) specificity
80
+ &.error::before,
81
+ &.error:has(input:checked)::before {
82
+ border-color: var(--ref-color-red-100);
83
+ }
84
+
85
+ &.error:hover:not(:has(input:disabled))::before {
86
+ border-color: var(--ref-color-red-60);
87
+ }
88
+
89
+ &.error:has(input:focus-visible)::before {
90
+ outline-color: var(--ref-color-red-100);
91
+ border-color: var(--ref-color-red-60);
92
+ }
93
+
94
+ // Label — direct span child
95
+ > span {
96
+ display: flex;
97
+ align-items: center;
98
+ @include m.text-style('body');
99
+ color: var(--ref-color-grey-100);
100
+ user-select: none;
101
+
102
+ &:empty {
103
+ display: none;
104
+ }
105
+ }
106
+
107
+ // Label: disabled
108
+ &:has(input:disabled) > span {
109
+ color: var(--ref-color-grey-60);
110
+ }
111
+ }