@inchurch/matcha-theme 20.0.3

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 (112) hide show
  1. package/README.md +303 -0
  2. package/abstracts/_colors.scss +405 -0
  3. package/abstracts/_elevation.scss +102 -0
  4. package/abstracts/_functions.scss +1213 -0
  5. package/abstracts/_media-breakpoint.scss +23 -0
  6. package/abstracts/_typography.scss +127 -0
  7. package/base/_reset.scss +438 -0
  8. package/components/matcha-accordion.scss +157 -0
  9. package/components/matcha-audio-player.scss +32 -0
  10. package/components/matcha-autocomplete.scss +134 -0
  11. package/components/matcha-avatar.scss +161 -0
  12. package/components/matcha-badge.scss +120 -0
  13. package/components/matcha-breadcrumb.scss +126 -0
  14. package/components/matcha-button-toggle.scss +363 -0
  15. package/components/matcha-buttons.scss +784 -0
  16. package/components/matcha-calendar.scss +154 -0
  17. package/components/matcha-cards.scss +205 -0
  18. package/components/matcha-chart-card.scss +60 -0
  19. package/components/matcha-checkbox.scss +554 -0
  20. package/components/matcha-chip.scss +212 -0
  21. package/components/matcha-color-pick.scss +35 -0
  22. package/components/matcha-command-palette.scss +89 -0
  23. package/components/matcha-crop.scss +172 -0
  24. package/components/matcha-date.scss +81 -0
  25. package/components/matcha-divider.scss +45 -0
  26. package/components/matcha-draggable.scss +24 -0
  27. package/components/matcha-drawer.scss +235 -0
  28. package/components/matcha-drop-list.scss +390 -0
  29. package/components/matcha-emoji.scss +69 -0
  30. package/components/matcha-empty-state.scss +118 -0
  31. package/components/matcha-flag.scss +62 -0
  32. package/components/matcha-footer.scss +187 -0
  33. package/components/matcha-form-field.scss +552 -0
  34. package/components/matcha-form-section.scss +101 -0
  35. package/components/matcha-header.scss +325 -0
  36. package/components/matcha-highlight.scss +296 -0
  37. package/components/matcha-hint-text.scss +66 -0
  38. package/components/matcha-horizontal-tree.scss +317 -0
  39. package/components/matcha-icon.scss +106 -0
  40. package/components/matcha-image.scss +62 -0
  41. package/components/matcha-list.scss +212 -0
  42. package/components/matcha-menu.scss +86 -0
  43. package/components/matcha-modal.scss +234 -0
  44. package/components/matcha-nav.scss +450 -0
  45. package/components/matcha-notification.scss +197 -0
  46. package/components/matcha-option.scss +95 -0
  47. package/components/matcha-page-builder.scss +4186 -0
  48. package/components/matcha-paginator.scss +235 -0
  49. package/components/matcha-panel.scss +167 -0
  50. package/components/matcha-profile-card.scss +50 -0
  51. package/components/matcha-progress-bar.scss +209 -0
  52. package/components/matcha-radio.scss +528 -0
  53. package/components/matcha-ripple.scss +7 -0
  54. package/components/matcha-scrollbar.scss +35 -0
  55. package/components/matcha-scrollbox-shadow.scss +123 -0
  56. package/components/matcha-section.scss +105 -0
  57. package/components/matcha-select.scss +661 -0
  58. package/components/matcha-skeleton.scss +138 -0
  59. package/components/matcha-slide-toggle.scss +590 -0
  60. package/components/matcha-slider.scss +188 -0
  61. package/components/matcha-snack-bar.scss +266 -0
  62. package/components/matcha-spin.scss +252 -0
  63. package/components/matcha-spinner.scss +78 -0
  64. package/components/matcha-stepper.scss +177 -0
  65. package/components/matcha-table-cell.scss +41 -0
  66. package/components/matcha-table.scss +785 -0
  67. package/components/matcha-tabs.scss +469 -0
  68. package/components/matcha-text-editor.scss +151 -0
  69. package/components/matcha-time.scss +33 -0
  70. package/components/matcha-timepicker.scss +13 -0
  71. package/components/matcha-toolbar.scss +206 -0
  72. package/components/matcha-tooltip.scss +128 -0
  73. package/components/matcha-uploader.scss +215 -0
  74. package/css/matcha-style.css +76772 -0
  75. package/fonts/CircularStd-Black.eot +0 -0
  76. package/fonts/CircularStd-Black.svg +3426 -0
  77. package/fonts/CircularStd-Black.ttf +0 -0
  78. package/fonts/CircularStd-Black.woff +0 -0
  79. package/fonts/CircularStd-Black.woff2 +0 -0
  80. package/fonts/CircularStd-Bold.eot +0 -0
  81. package/fonts/CircularStd-Bold.otf +0 -0
  82. package/fonts/CircularStd-Bold.svg +13532 -0
  83. package/fonts/CircularStd-Bold.ttf +0 -0
  84. package/fonts/CircularStd-Bold.woff +0 -0
  85. package/fonts/CircularStd-Bold.woff2 +0 -0
  86. package/fonts/CircularStd-Medium.eot +0 -0
  87. package/fonts/CircularStd-Medium.otf +0 -0
  88. package/fonts/CircularStd-Medium.svg +13511 -0
  89. package/fonts/CircularStd-Medium.ttf +0 -0
  90. package/fonts/CircularStd-Medium.woff +0 -0
  91. package/fonts/CircularStd-Medium.woff2 +0 -0
  92. package/fonts/CircularStd-Regular.eot +0 -0
  93. package/fonts/CircularStd-Regular.otf +0 -0
  94. package/fonts/CircularStd-Regular.svg +2378 -0
  95. package/fonts/CircularStd-Regular.ttf +0 -0
  96. package/fonts/CircularStd-Regular.woff +0 -0
  97. package/fonts/CircularStd-Regular.woff2 +0 -0
  98. package/main.scss +262 -0
  99. package/package.json +11 -0
  100. package/tokens/_animations-tokens.scss +37 -0
  101. package/tokens/_breakpoints-tokens.scss +26 -0
  102. package/tokens/_color-tokens.scss +1153 -0
  103. package/tokens/_css-custom-properties.scss +568 -0
  104. package/tokens/_elevation-tokens.scss +33 -0
  105. package/tokens/_spacing-tokens.scss +94 -0
  106. package/tokens/_typography-tokens.scss +65 -0
  107. package/vendors/angular-editor.scss +56 -0
  108. package/vendors/angular-material-fixes.scss +297 -0
  109. package/vendors/calendar.scss +2880 -0
  110. package/vendors/charts.scss +92 -0
  111. package/vendors/ng5-slider.scss +56 -0
  112. package/vendors/ngx-material-timepicker.scss +50 -0
@@ -0,0 +1,86 @@
1
+ // =============================================================================
2
+ // matcha-menu.scss — Dropdown context menu (modernized)
3
+ // =============================================================================
4
+
5
+ .matcha-menu-content {
6
+ button,
7
+ [matcha-button] {
8
+ position: relative;
9
+ overflow: hidden;
10
+
11
+ &::before {
12
+ content: '';
13
+ position: absolute;
14
+ inset: 0;
15
+ background: currentColor;
16
+ opacity: 0;
17
+ border-radius: inherit;
18
+ pointer-events: none;
19
+ transition: opacity var(--matcha-duration-instant, 80ms) linear;
20
+ }
21
+
22
+ &:hover:not([disabled])::before { opacity: var(--matcha-state-hover, 0.08); }
23
+ &:active:not([disabled])::before { opacity: var(--matcha-state-active, 0.12); }
24
+
25
+ @media (prefers-reduced-motion: reduce) {
26
+ &::before { transition: none; }
27
+ }
28
+
29
+ &[disabled] { pointer-events: none; }
30
+ }
31
+ }
32
+
33
+ @mixin matcha-menu-theme($theme) {
34
+ .matcha-menu-content {
35
+ display: flex;
36
+ flex-direction: column;
37
+ padding: var(--matcha-space-100, 8px) 0;
38
+
39
+ button,
40
+ [matcha-button] {
41
+ width: 100%;
42
+ text-align: left;
43
+ justify-content: flex-start;
44
+ border-radius: 0;
45
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
46
+ height: var(--matcha-space-500, 40px);
47
+ font-weight: var(--matcha-weight-medium, 500);
48
+
49
+ &:focus-visible:not([disabled]) {
50
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
51
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
52
+ }
53
+
54
+ matcha-icon,
55
+ .matcha-icon {
56
+ margin-right: var(--matcha-space-150, 12px);
57
+ }
58
+ }
59
+
60
+ .matcha-menu-item-has-submenu {
61
+ position: relative;
62
+ padding-right: calc(var(--matcha-space-400, 32px) + var(--matcha-space-050, 4px)); // 36
63
+
64
+ &::after {
65
+ content: '';
66
+ position: absolute;
67
+ right: var(--matcha-space-150, 12px);
68
+ top: 50%;
69
+ transform: translateY(-50%);
70
+ width: 0;
71
+ height: 0;
72
+ border-left: calc(var(--matcha-border-medium, 4px) + var(--matcha-border-hairline, 1px)) solid var(--matcha-color-hint, #{getGrey($theme)});
73
+ border-top: var(--matcha-border-medium, 4px) solid transparent;
74
+ border-bottom: var(--matcha-border-medium, 4px) solid transparent;
75
+ opacity: var(--matcha-opacity-secondary, 0.54);
76
+ transition: opacity var(--matcha-duration-instant, 80ms) linear;
77
+ }
78
+
79
+ &:hover::after { opacity: var(--matcha-opacity-high, 0.87); }
80
+
81
+ @media (prefers-reduced-motion: reduce) {
82
+ &::after { transition: none; }
83
+ }
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,234 @@
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-modal.scss — Modal dialog system (overlay, backdrop, sizes)
5
+ // =============================================================================
6
+
7
+ // ── Size generator ──────────────────────────────────────────────────────────
8
+
9
+ @mixin generate-matcha-modal-sizes-classes($helper-breakpoints) {
10
+ @each $breakpoint, $materialBreakpoint in $helper-breakpoints {
11
+ @include media-breakpoint($materialBreakpoint) {
12
+ $infix: if($materialBreakpoint == null, "", "-#{$breakpoint}");
13
+
14
+ &[size#{$infix}="tiny"] .matcha-modal {
15
+ width: 100%;
16
+ max-width: px-to-rem(320px);
17
+ }
18
+
19
+ &[size#{$infix}="small"] .matcha-modal {
20
+ width: 100%;
21
+ max-width: px-to-rem(400px);
22
+ }
23
+
24
+ &[size#{$infix}="medium"] .matcha-modal {
25
+ width: 100%;
26
+ max-width: px-to-rem(480px);
27
+ }
28
+
29
+ &[size#{$infix}="large"] .matcha-modal {
30
+ width: 100%;
31
+ max-width: px-to-rem(560px);
32
+ }
33
+
34
+ &[size#{$infix}="huge"] .matcha-modal {
35
+ width: 100%;
36
+ max-width: px-to-rem(640px);
37
+ }
38
+ }
39
+ }
40
+ }
41
+
42
+ // ── Overlay container ───────────────────────────────────────────────────────
43
+
44
+ .matcha-overlay-container {
45
+ position: fixed;
46
+ inset: 0;
47
+ z-index: 1000;
48
+ pointer-events: none;
49
+
50
+ & > * {
51
+ pointer-events: auto;
52
+ }
53
+
54
+ // Dim previous modals when stacking
55
+ & > *:not(:last-child) {
56
+ opacity: 0.1;
57
+ }
58
+ }
59
+
60
+ // ── Animations ──────────────────────────────────────────────────────────────
61
+
62
+ @keyframes matcha-modal-backdrop-in {
63
+ from { opacity: 0; }
64
+ to { opacity: 1; }
65
+ }
66
+
67
+ @keyframes matcha-modal-backdrop-out {
68
+ from { opacity: 1; }
69
+ to { opacity: 0; }
70
+ }
71
+
72
+ @keyframes matcha-modal-in {
73
+ from {
74
+ opacity: 0;
75
+ transform: scale(0.95) translateY(-8px);
76
+ }
77
+ to {
78
+ opacity: 1;
79
+ transform: scale(1) translateY(0);
80
+ }
81
+ }
82
+
83
+ @keyframes matcha-modal-out {
84
+ from {
85
+ opacity: 1;
86
+ transform: scale(1) translateY(0);
87
+ }
88
+ to {
89
+ opacity: 0;
90
+ transform: scale(0.97) translateY(4px);
91
+ }
92
+ }
93
+
94
+ @media (prefers-reduced-motion: reduce) {
95
+ .matcha-modal-backdrop,
96
+ .matcha-modal,
97
+ matcha-modal {
98
+ animation: none !important;
99
+ transition: none !important;
100
+ }
101
+ }
102
+
103
+ // =============================================================================
104
+ // Theme mixin
105
+ // =============================================================================
106
+
107
+ @mixin matcha-modal-theme($theme) {
108
+ $is-dark: map.get($theme, is-dark);
109
+
110
+ // ── Host element ──
111
+ matcha-modal {
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ position: fixed;
116
+ inset: 0;
117
+ z-index: 999;
118
+
119
+ @include generate-matcha-modal-sizes-classes($helper-breakpoints);
120
+
121
+ // Exit animation class (added by service before destroy)
122
+ &.matcha-modal--closing {
123
+ .matcha-modal {
124
+ animation: matcha-modal-out 150ms cubic-bezier(0.4, 0, 1, 1) forwards;
125
+ }
126
+ }
127
+ }
128
+
129
+ // ── Backdrop ──
130
+ .matcha-modal-backdrop {
131
+ position: fixed;
132
+ inset: 0;
133
+ z-index: 998;
134
+ cursor: pointer;
135
+ // Figma matcha/overlay Type=Modal: scrim 50% + blur 6px
136
+ background: var(--matcha-scrim-modal, rgba(0, 0, 0, 0.5));
137
+ backdrop-filter: blur(var(--matcha-scrim-modal-blur, 6px));
138
+ animation: matcha-modal-backdrop-in var(--matcha-duration-normal, 200ms) ease-out;
139
+
140
+ &.matcha-modal-backdrop--closing {
141
+ animation: matcha-modal-backdrop-out 150ms ease-in forwards;
142
+ }
143
+ }
144
+
145
+ // ── Modal card ──
146
+ .matcha-modal {
147
+ position: relative;
148
+ z-index: 999;
149
+ display: flex;
150
+ flex-direction: column;
151
+ border-radius: var(--matcha-radius-xl, 16px);
152
+ background-color: var(--matcha-color-surface, #{getSurface($theme)});
153
+ color: var(--matcha-color-fg, #{getForeground($theme)});
154
+ overflow: hidden;
155
+ animation: matcha-modal-in var(--matcha-duration-normal, 200ms) cubic-bezier(0.16, 1, 0.3, 1);
156
+
157
+ // Shadow level 3 (modals, drawers)
158
+ box-shadow: var(--matcha-shadow-3, #{if($is-dark, $shadow-3-dark, $shadow-3-light)});
159
+
160
+ @if $is-dark {
161
+ border: var(--matcha-border-hairline, 1px) solid rgba(255, 255, 255, 0.06);
162
+ }
163
+ }
164
+
165
+ // ── Header ──
166
+ .matcha-modal-header {
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: space-between;
170
+ gap: var(--matcha-space-150, 12px);
171
+ padding: var(--matcha-space-200, 16px) var(--matcha-space-300, 24px);
172
+ flex-shrink: 0;
173
+
174
+ // Figma matcha/modal title: 20/800/28 (title-xl ExtraBold)
175
+ .matcha-modal-header__title {
176
+ flex: 1;
177
+ font-size: var(--matcha-text-title-xl, 20px);
178
+ font-weight: var(--matcha-weight-extrabold, 800);
179
+ line-height: var(--matcha-leading-title-xl, 28px);
180
+ color: var(--matcha-color-fg, #{getForeground($theme)});
181
+ }
182
+ }
183
+
184
+ // ── Content ──
185
+ .matcha-modal-content {
186
+ flex: 1;
187
+ overflow-y: auto;
188
+ overflow-x: hidden;
189
+ padding: var(--matcha-space-300, 24px);
190
+ max-height: calc(100vh - 300px);
191
+ color: var(--matcha-color-fg, #{getForeground($theme)});
192
+
193
+ // Smooth content resize
194
+ transition: max-height var(--matcha-duration-normal, 200ms) ease;
195
+ }
196
+
197
+ // ── Footer ──
198
+ .matcha-modal-footer {
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: flex-end;
202
+ gap: var(--matcha-space-150, 12px);
203
+ padding: var(--matcha-space-200, 16px) var(--matcha-space-300, 24px);
204
+ flex-shrink: 0;
205
+
206
+ // Mobile: stack buttons vertically
207
+ @media (max-width: 575px) {
208
+ flex-direction: column-reverse;
209
+
210
+ .matcha-button {
211
+ width: 100%;
212
+ }
213
+ }
214
+ }
215
+
216
+ // ── Dividers inside modal ──
217
+ matcha-modal-header matcha-divider,
218
+ matcha-modal-footer matcha-divider {
219
+ margin-inline: calc(-1 * var(--matcha-space-300, 24px));
220
+ }
221
+
222
+ // ── Options (action icons in header) ──
223
+ .matcha-modal-options {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: var(--matcha-space-100, 8px);
227
+ }
228
+
229
+ // ── Focus ring on modal ──
230
+ .matcha-modal:focus-visible {
231
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
232
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
233
+ }
234
+ }