@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,121 @@
1
+ // Agorapulse Textarea Styles
2
+ @use 'mixins' as m;
3
+
4
+ // Textarea field container
5
+ .ap-textarea-field {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: var(--ref-spacing-xxs);
9
+
10
+ // Label — implicit > label
11
+ > 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
+ // Description — implicit > label > small
22
+ > small {
23
+ font-size: var(--comp-forms-label-description-text-size);
24
+ font-weight: var(--comp-forms-label-description-text-font-weight);
25
+ line-height: var(--comp-forms-label-description-text-line-height);
26
+ font-family: var(--comp-forms-label-description-text-font-family);
27
+ color: var(--comp-forms-label-description-text-color);
28
+ }
29
+ }
30
+
31
+ // Textarea — implicit > textarea
32
+ > 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
+ &::placeholder {
48
+ color: var(--comp-input-text-placeholder-color);
49
+ }
50
+
51
+ &:hover:not(:focus):not(:disabled) {
52
+ border-color: var(--comp-input-border-hover-color);
53
+ }
54
+
55
+ &:focus:not(:disabled) {
56
+ border-color: var(--comp-input-border-focused-color);
57
+ }
58
+
59
+ &:focus-visible {
60
+ @include m.focus-ring;
61
+ }
62
+
63
+ &:disabled {
64
+ background-color: var(--comp-input-fill-disabled-color);
65
+ color: var(--comp-input-text-disabled-color);
66
+ cursor: default;
67
+ }
68
+ }
69
+
70
+ // Invalid state — on container
71
+ &.invalid > textarea {
72
+ border-color: var(--comp-input-border-error-color);
73
+
74
+ &:hover:not(:focus):not(:disabled) {
75
+ border-color: var(--comp-input-border-error-color);
76
+ }
77
+ }
78
+
79
+ // Valid state — on container
80
+ &.valid > textarea {
81
+ border-color: var(--comp-input-border-success-color);
82
+
83
+ &:hover:not(:focus):not(:disabled) {
84
+ border-color: var(--comp-input-border-success-color);
85
+ }
86
+ }
87
+
88
+ // Resize variants — on container
89
+ &.resizable > textarea {
90
+ resize: vertical;
91
+ }
92
+
93
+ &.resizable-horizontal > textarea {
94
+ resize: horizontal;
95
+ }
96
+
97
+ &.resizable-both > textarea {
98
+ resize: both;
99
+ }
100
+
101
+ &.autoresize > textarea {
102
+ overflow: hidden;
103
+ }
104
+ }
105
+
106
+ // Character count
107
+ .ap-textarea-counter {
108
+ font-size: var(--sys-text-style-caption-size);
109
+ font-weight: var(--sys-text-style-caption-weight);
110
+ line-height: var(--sys-text-style-caption-line-height);
111
+ color: var(--ref-color-grey-80);
112
+ text-align: right;
113
+
114
+ &.warning {
115
+ color: var(--ref-color-orange-100);
116
+ }
117
+
118
+ &.error {
119
+ color: var(--ref-color-red-100);
120
+ }
121
+ }
@@ -0,0 +1,136 @@
1
+ // Agorapulse Toggle Styles
2
+ @use 'mixins' as m;
3
+
4
+ .ap-toggle-container {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: var(--ref-spacing-xxs);
8
+ cursor: pointer;
9
+ font-family: var(--sys-text-style-body-font-family);
10
+ font-size: var(--sys-text-style-body-size);
11
+ line-height: var(--sys-text-style-body-line-height);
12
+ color: var(--ref-color-grey-100);
13
+
14
+ &:has(input:disabled) {
15
+ cursor: default;
16
+ }
17
+
18
+ // Label positioning
19
+ &.label-left {
20
+ flex-direction: row-reverse;
21
+ }
22
+
23
+ // Native checkbox input (visually hidden but accessible)
24
+ > input {
25
+ @include m.sr-only;
26
+ }
27
+
28
+ // Toggle track — <i> element
29
+ > i {
30
+ box-sizing: content-box;
31
+ position: relative;
32
+ display: flex;
33
+ align-items: center;
34
+ padding: 2px;
35
+ width: 28px;
36
+ height: 12px;
37
+ border-radius: 16px;
38
+ background: var(--ref-color-grey-60);
39
+ transition: background-color 0.25s;
40
+ flex-shrink: 0;
41
+
42
+ // Knob circle
43
+ &::before {
44
+ content: '';
45
+ width: 12px;
46
+ height: 12px;
47
+ background: var(--ref-color-white);
48
+ border-radius: 100%;
49
+ position: absolute;
50
+ left: 2px;
51
+ transition: left 0.25s ease-in-out;
52
+ }
53
+
54
+ // Icon (X by default, check when checked)
55
+ &::after {
56
+ content: '';
57
+ width: 10px;
58
+ height: 10px;
59
+ position: absolute;
60
+ left: 3px;
61
+ transition: left 0.25s ease-in-out;
62
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M11.394 12.525a.8.8 0 1 0 1.131-1.13L9.131 8l3.394-3.394a.8.8 0 0 0-1.13-1.131L8 6.869 4.606 3.474a.8.8 0 1 0-1.131 1.132L6.869 8l-3.395 3.394a.8.8 0 1 0 1.132 1.132L8 9.13l3.394 3.394Z'/%3E%3C/svg%3E");
63
+ mask-size: contain;
64
+ mask-repeat: no-repeat;
65
+ background-color: var(--ref-color-grey-80);
66
+ }
67
+ }
68
+
69
+ // Hover state (unchecked)
70
+ &:hover:not(:has(input:disabled)) > i {
71
+ background: var(--ref-color-grey-80);
72
+ }
73
+
74
+ // Hover state (checked)
75
+ &:hover:not(:has(input:disabled)):has(input:checked) > i {
76
+ background: var(--ref-color-electric-blue-80);
77
+ }
78
+
79
+ // Active state (checked)
80
+ &:active:not(:has(input:disabled)):has(input:checked) > i {
81
+ background: var(--ref-color-electric-blue-60);
82
+ }
83
+
84
+ // Focus ring (keyboard only)
85
+ &:has(input:focus-visible) > i {
86
+ @include m.focus-ring;
87
+ }
88
+
89
+ // Checked state
90
+ &:has(input:checked) > i {
91
+ background: var(--ref-color-electric-blue-100);
92
+
93
+ &::before {
94
+ left: 18px;
95
+ }
96
+
97
+ &::after {
98
+ left: 19px;
99
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M14.238 3.337a.92.92 0 0 1 .025 1.301l-7.7 8a.92.92 0 0 1-1.326 0l-3.5-3.636a.92.92 0 1 1 1.326-1.276L5.9 10.674l7.037-7.312a.92.92 0 0 1 1.301-.025Z'/%3E%3C/svg%3E");
100
+ background-color: var(--ref-color-electric-blue-150);
101
+ }
102
+ }
103
+
104
+ // Disabled state
105
+ &:has(input:disabled) > i {
106
+ background: var(--ref-color-grey-20);
107
+
108
+ &::after {
109
+ background-color: var(--ref-color-grey-40);
110
+ }
111
+ }
112
+
113
+ // Disabled + checked
114
+ &:has(input:disabled:checked) > i::after {
115
+ background-color: var(--ref-color-grey-40);
116
+ }
117
+
118
+ // Label — implicit > span
119
+ > span {
120
+ display: flex;
121
+ align-items: center;
122
+ @include m.text-style('body');
123
+ color: var(--ref-color-grey-100);
124
+ user-select: none;
125
+ cursor: pointer;
126
+
127
+ &:empty {
128
+ display: none;
129
+ }
130
+ }
131
+
132
+ &:has(input:disabled) > span {
133
+ color: var(--ref-color-grey-60);
134
+ cursor: default;
135
+ }
136
+ }
@@ -0,0 +1,122 @@
1
+ // Agorapulse Tooltip Styles
2
+
3
+ @keyframes ap-tooltip-fade-in {
4
+ 0% { opacity: 0; }
5
+ 100% { opacity: 1; }
6
+ }
7
+
8
+ .ap-tooltip {
9
+ --ap-arrow-width: 16px;
10
+ --ap-arrow-height: 8px;
11
+ --ap-arrow-offset: 10px;
12
+
13
+ width: fit-content;
14
+ max-width: 350px;
15
+ background: var(--comp-tooltip-text-color-main-default-bg);
16
+ border-radius: var(--ref-border-radius-md);
17
+ position: absolute;
18
+ z-index: 9999999;
19
+ animation: ap-tooltip-fade-in var(--ref-animation-short, 0.15s) ease-in-out;
20
+
21
+ // Text styles — gated to CSS-UI position classes to avoid leaking into Angular tooltip
22
+ &.top, &.top-left, &.top-right,
23
+ &.bottom, &.bottom-left, &.bottom-right,
24
+ &.left, &.right {
25
+ padding: var(--ref-spacing-xxs) var(--ref-spacing-xs);
26
+ color: var(--comp-tooltip-text-default-color);
27
+ font-family: var(--comp-tooltip-text-style-font-family);
28
+ font-size: var(--comp-tooltip-text-style-size);
29
+ font-weight: var(--comp-tooltip-text-style-weight);
30
+ line-height: var(--comp-tooltip-text-style-line-height);
31
+ }
32
+
33
+ // Arrow via CSS (no inline SVG needed)
34
+ // Base arrow styles on ::after — content is only set when a position class is present
35
+ // to avoid conflicts with the Angular tooltip which also uses .ap-tooltip
36
+ &::after {
37
+ display: block;
38
+ position: absolute;
39
+ z-index: 10000;
40
+ width: var(--ap-arrow-width);
41
+ height: var(--ap-arrow-height);
42
+ background-color: var(--ref-color-grey-100);
43
+ clip-path: polygon(0 0, 50% 100%, 100% 0);
44
+ }
45
+
46
+ // Only render the arrow when a CSS-UI position class is applied
47
+ &.top::after,
48
+ &.top-left::after,
49
+ &.top-right::after,
50
+ &.bottom::after,
51
+ &.bottom-left::after,
52
+ &.bottom-right::after,
53
+ &.left::after,
54
+ &.right::after {
55
+ content: '';
56
+ }
57
+
58
+ // Arrow positioning - Top
59
+ &.top::after,
60
+ &.top-left::after,
61
+ &.top-right::after {
62
+ bottom: 0;
63
+ transform: translateY(100%);
64
+ }
65
+
66
+ &.top::after {
67
+ left: 50%;
68
+ transform: translateX(-50%) translateY(100%);
69
+ }
70
+
71
+ &.top-left::after {
72
+ left: var(--ap-arrow-offset);
73
+ }
74
+
75
+ &.top-right::after {
76
+ right: var(--ap-arrow-offset);
77
+ }
78
+
79
+ // Arrow positioning - Bottom
80
+ &.bottom::after,
81
+ &.bottom-left::after,
82
+ &.bottom-right::after {
83
+ top: 0;
84
+ transform: rotate(180deg) translateY(100%);
85
+ }
86
+
87
+ &.bottom::after {
88
+ left: 50%;
89
+ transform: translateX(-50%) rotate(180deg) translateY(100%);
90
+ }
91
+
92
+ &.bottom-left::after {
93
+ left: var(--ap-arrow-offset);
94
+ }
95
+
96
+ &.bottom-right::after {
97
+ right: var(--ap-arrow-offset);
98
+ }
99
+
100
+ // Arrow positioning - Left (arrow points right, toward the trigger)
101
+ &.left::after {
102
+ right: 0;
103
+ top: 50%;
104
+ transform: translateX(calc(100% - var(--ap-arrow-height) / 2)) translateY(-50%) rotate(-90deg);
105
+ }
106
+
107
+ // Arrow positioning - Right (arrow points left, toward the trigger)
108
+ &.right::after {
109
+ left: 0;
110
+ top: 50%;
111
+ transform: translateX(calc(-100% + var(--ap-arrow-height) / 2)) translateY(-50%) rotate(90deg);
112
+ }
113
+
114
+ // Custom template tooltip (white background, rich content)
115
+ &.custom {
116
+ background-color: var(--ref-color-white);
117
+ color: var(--ref-color-grey-100);
118
+ filter: drop-shadow(0 0 10px rgba(0, 0, 0, 0.08));
119
+
120
+ &::after { background-color: var(--ref-color-white); }
121
+ }
122
+ }
@@ -1,7 +1,7 @@
1
- @use '@angular/material' as mat;
2
- @use 'variables' as vars;
1
+ @use 'mixins';
2
+
3
+ // ── Tag-based rules (global styling) ──
3
4
 
4
- // Override base header tags (so that we don't have to add Material classes, e.g: class="mat-h1")
5
5
  h1,
6
6
  h2,
7
7
  h3,
@@ -30,30 +30,43 @@ h4 {
30
30
  font-weight: var(--sys-text-style-h4-weight);
31
31
  }
32
32
  p {
33
- margin: 0 0 vars.$padding-ml;
33
+ margin: 0 0 var(--ref-spacing-xs);
34
34
  }
35
- .h0 {
36
- font-size: var(--sys-text-style-h0-size);
37
- line-height: var(--sys-text-style-h0-line-height);
38
- font-weight: var(--sys-text-style-h0-weight);
35
+
36
+ // ── Typography classes — legacy + .ap-* aliases ──
37
+
38
+ .h0,
39
+ .ap-h0 {
40
+ @include mixins.text-style(h0);
39
41
  }
42
+
40
43
  .ap-subtitle {
41
- font-size: var(--sys-text-style-subtitle-size);
42
- line-height: var(--sys-text-style-subtitle-line-height);
43
- font-weight: var(--sys-text-style-subtitle-weight);
44
- }
45
- p.large,
46
- span.large {
47
- font-size: 16px;
48
- line-height: 20px;
44
+ @include mixins.text-style(subtitle);
49
45
  }
46
+
47
+ .ap-h1 { @include mixins.text-style(h1); }
48
+ .ap-h2 { @include mixins.text-style(h2); }
49
+ .ap-h3 { @include mixins.text-style(h3); }
50
+ .ap-h4 { @include mixins.text-style(h4); }
51
+ .ap-body { @include mixins.text-style(body); }
52
+ .ap-body-bold { @include mixins.text-style(body-bold); }
53
+
50
54
  p.caption,
51
55
  span.caption,
52
- .ap-caption .mat-caption,
56
+ .ap-caption,
53
57
  .mat-caption {
54
58
  font-size: var(--sys-text-style-caption-size);
55
59
  line-height: var(--sys-text-style-caption-line-height);
56
60
  }
61
+
62
+ .ap-caption-bold { @include mixins.text-style(caption-bold); }
63
+ .ap-marketing { @include mixins.text-style(marketing); }
64
+
65
+ p.large,
66
+ span.large {
67
+ font-size: 16px;
68
+ line-height: 20px;
69
+ }
57
70
  p.small,
58
71
  span.small,
59
72
  small {
@@ -61,17 +74,12 @@ small {
61
74
  line-height: 14px;
62
75
  }
63
76
 
64
- .bold {
77
+ .bold,
78
+ .ap-bold {
65
79
  font-weight: var(--sys-text-style-body-bold-weight);
66
80
  }
67
81
 
68
- .italic {
82
+ .italic,
83
+ .ap-italic {
69
84
  font-style: italic;
70
85
  }
71
-
72
- // Override default text state
73
- body {
74
- .mat-drawer-container {
75
- color: vars.$font-color;
76
- }
77
- }