@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,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,132 @@
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
+
19
+ // Native checkbox input (visually hidden but accessible)
20
+ > input {
21
+ @include m.sr-only;
22
+ }
23
+
24
+ // Toggle track — <i> element
25
+ > i {
26
+ box-sizing: content-box;
27
+ position: relative;
28
+ display: flex;
29
+ align-items: center;
30
+ padding: 2px;
31
+ width: 28px;
32
+ height: 12px;
33
+ border-radius: 16px;
34
+ background: var(--ref-color-grey-60);
35
+ transition: background-color 0.25s;
36
+ flex-shrink: 0;
37
+
38
+ // Knob circle
39
+ &::before {
40
+ content: '';
41
+ width: 12px;
42
+ height: 12px;
43
+ background: var(--ref-color-white);
44
+ border-radius: 100%;
45
+ position: absolute;
46
+ left: 2px;
47
+ transition: left 0.25s ease-in-out;
48
+ }
49
+
50
+ // Icon (X by default, check when checked)
51
+ &::after {
52
+ content: '';
53
+ width: 10px;
54
+ height: 10px;
55
+ position: absolute;
56
+ left: 3px;
57
+ transition: left 0.25s ease-in-out;
58
+ 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");
59
+ mask-size: contain;
60
+ mask-repeat: no-repeat;
61
+ background-color: var(--ref-color-grey-80);
62
+ }
63
+ }
64
+
65
+ // Hover state (unchecked)
66
+ &:hover:not(:has(input:disabled)) > i {
67
+ background: var(--ref-color-grey-80);
68
+ }
69
+
70
+ // Hover state (checked)
71
+ &:hover:not(:has(input:disabled)):has(input:checked) > i {
72
+ background: var(--ref-color-electric-blue-80);
73
+ }
74
+
75
+ // Active state (checked)
76
+ &:active:not(:has(input:disabled)):has(input:checked) > i {
77
+ background: var(--ref-color-electric-blue-60);
78
+ }
79
+
80
+ // Focus ring (keyboard only)
81
+ &:has(input:focus-visible) > i {
82
+ @include m.focus-ring;
83
+ }
84
+
85
+ // Checked state
86
+ &:has(input:checked) > i {
87
+ background: var(--ref-color-electric-blue-100);
88
+
89
+ &::before {
90
+ left: 18px;
91
+ }
92
+
93
+ &::after {
94
+ left: 19px;
95
+ 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");
96
+ background-color: var(--ref-color-electric-blue-150);
97
+ }
98
+ }
99
+
100
+ // Disabled state
101
+ &:has(input:disabled) > i {
102
+ background: var(--ref-color-grey-20);
103
+
104
+ &::after {
105
+ background-color: var(--ref-color-grey-40);
106
+ }
107
+ }
108
+
109
+ // Disabled + checked
110
+ &:has(input:disabled:checked) > i::after {
111
+ background-color: var(--ref-color-grey-40);
112
+ }
113
+
114
+ // Label — implicit > span
115
+ > span {
116
+ display: flex;
117
+ align-items: center;
118
+ @include m.text-style('body');
119
+ color: var(--ref-color-grey-100);
120
+ user-select: none;
121
+ cursor: pointer;
122
+
123
+ &:empty {
124
+ display: none;
125
+ }
126
+ }
127
+
128
+ &:has(input:disabled) > span {
129
+ color: var(--ref-color-grey-60);
130
+ cursor: default;
131
+ }
132
+ }
@@ -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
- }
@@ -0,0 +1,43 @@
1
+ /* Averta font-face declarations — standalone CSS for non-Angular consumers.
2
+ Paths are relative to this file: ../../fonts/averta/ resolves correctly
3
+ when bundlers (Vite, webpack) process url() from node_modules. */
4
+
5
+ @font-face {
6
+ font-family: 'Averta';
7
+ font-weight: 400;
8
+ font-style: normal;
9
+ src: url('../../fonts/averta/AvertaStd-Regular.otf') format('opentype');
10
+ font-display: swap;
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'Averta';
15
+ font-weight: 600;
16
+ font-style: normal;
17
+ src: url('../../fonts/averta/AvertaStd-Semibold.otf') format('opentype');
18
+ font-display: swap;
19
+ }
20
+
21
+ @font-face {
22
+ font-family: 'Averta';
23
+ font-weight: 700;
24
+ font-style: normal;
25
+ src: url('../../fonts/averta/AvertaStd-Bold.otf') format('opentype');
26
+ font-display: swap;
27
+ }
28
+
29
+ @font-face {
30
+ font-family: 'Averta';
31
+ font-weight: 800;
32
+ font-style: normal;
33
+ src: url('../../fonts/averta/AvertaStd-Extrabold.otf') format('opentype');
34
+ font-display: swap;
35
+ }
36
+
37
+ @font-face {
38
+ font-family: 'Averta';
39
+ font-weight: 900;
40
+ font-style: normal;
41
+ src: url('../../fonts/averta/AvertaStd-Black.otf') format('opentype');
42
+ font-display: swap;
43
+ }