@agorapulse/ui-theme 20.1.19 → 20.2.0-1

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 (67) hide show
  1. package/agorapulse-ui-theme-1.0.0-SNAPSHOT.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 +4721 -27
  38. package/assets/style/css-ui/index.scss +34 -0
  39. package/assets/style/theme.css +6173 -0
  40. package/assets/style/theme.css.map +1 -0
  41. package/assets/style/theme.scss +9 -2
  42. package/package.json +25 -22
  43. package/src/tokens/system/icon.json +33 -0
  44. package/agorapulse-ui-theme-20.1.19.tgz +0 -0
  45. package/assets/style/css-ui/action-dropdown.css +0 -172
  46. package/assets/style/css-ui/avatar.css +0 -199
  47. package/assets/style/css-ui/button.css +0 -446
  48. package/assets/style/css-ui/checkbox.css +0 -170
  49. package/assets/style/css-ui/counter.css +0 -73
  50. package/assets/style/css-ui/datepicker.css +0 -294
  51. package/assets/style/css-ui/dot-stepper.css +0 -67
  52. package/assets/style/css-ui/infobox.css +0 -163
  53. package/assets/style/css-ui/input.css +0 -119
  54. package/assets/style/css-ui/label.css +0 -67
  55. package/assets/style/css-ui/link.css +0 -92
  56. package/assets/style/css-ui/loader.css +0 -247
  57. package/assets/style/css-ui/pagination.css +0 -161
  58. package/assets/style/css-ui/radio.css +0 -109
  59. package/assets/style/css-ui/snackbar.css +0 -166
  60. package/assets/style/css-ui/status.css +0 -87
  61. package/assets/style/css-ui/stepper.css +0 -123
  62. package/assets/style/css-ui/table.css +0 -305
  63. package/assets/style/css-ui/tabs.css +0 -188
  64. package/assets/style/css-ui/tag.css +0 -171
  65. package/assets/style/css-ui/textarea.css +0 -158
  66. package/assets/style/css-ui/toggle.css +0 -161
  67. 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
- }