@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,206 @@
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-toolbar.scss — Page toolbar + Settings toolbar item
5
+ // Aligned with Figma matcha/toolbar (3 tipos) + matcha/toolbar/item (3 tipos)
6
+ // Angular: matcha-toolbar, matcha-toolbar-button, matcha-toolbar-main-button,
7
+ // matcha-toolbar-content, matcha-toolbar-custom-button
8
+ // =============================================================================
9
+
10
+ @mixin matcha-toolbar-theme($theme) {
11
+ $is-dark: map.get($theme, is-dark);
12
+
13
+ // ── Page Toolbar Container ──
14
+ matcha-toolbar {
15
+ .matcha-toolbar-container {
16
+ background: var(--matcha-color-surface, #{getSurface($theme)});
17
+ border-radius: var(--matcha-radius-lg, 8px);
18
+ }
19
+ }
20
+
21
+ // ── Toolbar Button (icon, outline, grey) ──
22
+ matcha-toolbar-button {
23
+ button {
24
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
25
+
26
+ &:hover:not(:disabled) {
27
+ background: var(--matcha-color-surface-hover, #{getBackgroundAlpha($theme)});
28
+ }
29
+
30
+ &:focus-visible {
31
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
32
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
33
+ }
34
+ }
35
+ }
36
+
37
+ // ── Main Button (accent) ──
38
+ matcha-toolbar-main-button {
39
+ button {
40
+ background: var(--matcha-color-accent, #{getAccent($theme)});
41
+ color: var(--matcha-color-accent-contrast, #{getAccentContrast($theme)});
42
+
43
+ &:hover:not(:disabled) {
44
+ opacity: 0.9;
45
+ }
46
+
47
+ &:focus-visible {
48
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
49
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
50
+ }
51
+ }
52
+ }
53
+
54
+ // ── Settings Toolbar Item ──
55
+ .matcha-toolbar-item {
56
+ .toolbar-item-title {
57
+ color: var(--matcha-color-fg, #{getForeground($theme)});
58
+ }
59
+
60
+ .toolbar-item-description {
61
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
62
+ }
63
+
64
+ .toolbar-item-hint {
65
+ color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
66
+ }
67
+ }
68
+ }
69
+
70
+ // ── Layout ──────────────────────────────────────────────────────────────────
71
+
72
+ matcha-toolbar {
73
+ display: block;
74
+ width: 100%;
75
+
76
+ .matcha-toolbar-container {
77
+ display: flex;
78
+ flex-wrap: wrap;
79
+ align-items: center;
80
+ justify-content: space-between;
81
+ // Figma matcha/toolbar: h 64, pad 16, gap 8, radius 8
82
+ padding: var(--matcha-space-200, 16px);
83
+ gap: var(--matcha-space-100, 8px);
84
+ min-height: 64px;
85
+ border-radius: var(--matcha-radius-lg, 8px);
86
+ }
87
+
88
+ .matcha-toolbar-title {
89
+ display: flex;
90
+ align-items: center;
91
+ min-height: 32px;
92
+ flex: 1;
93
+ min-width: 0;
94
+ }
95
+
96
+ .matcha-toolbar-actions {
97
+ display: flex;
98
+ align-items: center;
99
+ gap: var(--matcha-space-100, 8px);
100
+ flex-wrap: wrap;
101
+ }
102
+ }
103
+
104
+ // ── Toolbar Button ──
105
+ matcha-toolbar-button {
106
+ display: inline-flex;
107
+ }
108
+
109
+ // ── Main Button ──
110
+ matcha-toolbar-main-button {
111
+ display: inline-flex;
112
+
113
+ button {
114
+ border: none;
115
+ border-radius: var(--matcha-radius-lg, 8px);
116
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
117
+ font-family: var(--matcha-font-family);
118
+ font-size: var(--matcha-text-label-md, 14px);
119
+ font-weight: var(--matcha-weight-medium, 500);
120
+ cursor: pointer;
121
+ display: flex;
122
+ align-items: center;
123
+ gap: var(--matcha-space-100, 8px);
124
+ min-height: 40px;
125
+ }
126
+ }
127
+
128
+ // ── Toolbar Content ──
129
+ matcha-toolbar-content {
130
+ display: flex;
131
+ flex-wrap: wrap;
132
+ gap: var(--matcha-space-100, 8px);
133
+ }
134
+
135
+ // ── Settings Toolbar Item ──
136
+ .matcha-toolbar-item {
137
+ display: flex;
138
+ flex-direction: column;
139
+ gap: var(--matcha-space-200, 16px);
140
+ width: 100%;
141
+
142
+ .toolbar-item-header {
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: space-between;
146
+ gap: var(--matcha-space-200, 16px);
147
+ }
148
+
149
+ .toolbar-item-dropdowns {
150
+ display: flex;
151
+ align-items: center;
152
+ gap: var(--matcha-space-100, 8px);
153
+ flex-wrap: wrap;
154
+ }
155
+
156
+ .toolbar-item-description {
157
+ font-family: var(--matcha-font-family);
158
+ font-size: var(--matcha-text-body-md, 14px);
159
+ line-height: var(--matcha-leading-body-md, 20px);
160
+ }
161
+
162
+ .toolbar-item-chips {
163
+ display: flex;
164
+ flex-wrap: wrap;
165
+ gap: var(--matcha-space-100, 8px);
166
+ }
167
+
168
+ .toolbar-item-hint {
169
+ font-family: var(--matcha-font-family);
170
+ font-size: var(--matcha-text-body-md, 14px);
171
+ line-height: var(--matcha-leading-body-md, 20px);
172
+ }
173
+ }
174
+
175
+ // ── Responsive ──
176
+ @include media-breakpoint('lt-md') {
177
+ matcha-toolbar {
178
+ .matcha-toolbar-container {
179
+ flex-direction: column;
180
+ align-items: stretch;
181
+ }
182
+
183
+ .matcha-toolbar-title {
184
+ width: 100%;
185
+ justify-content: space-between;
186
+ }
187
+
188
+ .matcha-toolbar-actions {
189
+ width: 100%;
190
+ }
191
+ }
192
+
193
+ .matcha-toolbar-item {
194
+ .toolbar-item-header {
195
+ flex-direction: column;
196
+ align-items: flex-start;
197
+ }
198
+ }
199
+ }
200
+
201
+ // ── Reduced motion ──
202
+ @media (prefers-reduced-motion: reduce) {
203
+ matcha-toolbar-main-button button {
204
+ transition: none;
205
+ }
206
+ }
@@ -0,0 +1,128 @@
1
+ // =============================================================================
2
+ // matcha-tooltip.scss — Tooltip with arrow (4 positions + close button)
3
+ // Aligned with Figma matcha/tooltip: Posição(4) × Close(2) = 5 variants
4
+ // =============================================================================
5
+
6
+ .matcha-tooltip-content {
7
+ // Figma matcha/tooltip: pad 8/16, radius 8, text 14/500/20 (Medium)
8
+ position: absolute;
9
+ z-index: var(--matcha-z-tooltip, 400);
10
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
11
+ border-radius: var(--matcha-radius-lg, 8px);
12
+ font-size: var(--matcha-text-md, 14px);
13
+ font-weight: var(--matcha-weight-medium, 500);
14
+ line-height: var(--matcha-leading-body-md, 20px);
15
+ width: auto;
16
+ max-width: 500px;
17
+ text-overflow: ellipsis;
18
+ display: inline-flex;
19
+ gap: var(--matcha-space-100, 8px);
20
+ align-items: center;
21
+ justify-content: center;
22
+ text-align: center;
23
+
24
+ // Arrow — default: above (arrow points down)
25
+ &:not(.matcha-tooltip-content_below):not(.matcha-tooltip-content_left):not(.matcha-tooltip-content_right)::after {
26
+ content: "";
27
+ position: absolute;
28
+ width: 0;
29
+ height: 0;
30
+ border-style: solid;
31
+ border-width: 6px 8px 0 8px;
32
+ bottom: -4px;
33
+ left: 50%;
34
+ border-radius: var(--matcha-radius-none, 0);
35
+ transform: translateX(-50%);
36
+ }
37
+ }
38
+
39
+ // Close button
40
+ .matcha-tooltip-close {
41
+ display: flex;
42
+ pointer-events: auto;
43
+ cursor: pointer;
44
+
45
+ &::before {
46
+ content: "\e92a";
47
+ font-family: 'MatchaIcons';
48
+ font-size: var(--matcha-icon-size-sm, 16px);
49
+ line-height: 16px;
50
+ width: 16px;
51
+ height: 16px;
52
+ display: inline-flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ }
56
+ }
57
+
58
+ // Arrow — below (arrow points up)
59
+ .matcha-tooltip-content_below::before {
60
+ content: '';
61
+ position: absolute;
62
+ width: 0;
63
+ height: 0;
64
+ border-style: solid;
65
+ border-width: 0px 8px 6px 8px;
66
+ top: -4px;
67
+ left: 50%;
68
+ transform: translateX(-50%);
69
+ }
70
+
71
+ // Arrow — left (arrow points right)
72
+ .matcha-tooltip-content_left::after {
73
+ content: '';
74
+ position: absolute;
75
+ width: 0;
76
+ height: 0;
77
+ border-style: solid;
78
+ border-width: 8px 0 8px 6px;
79
+ top: 50%;
80
+ right: -4px;
81
+ transform: translateY(-50%);
82
+ }
83
+
84
+ // Arrow — right (arrow points left)
85
+ .matcha-tooltip-content_right::after {
86
+ content: '';
87
+ position: absolute;
88
+ width: 0;
89
+ height: 0;
90
+ border-style: solid;
91
+ border-width: 8px 6px 8px 0;
92
+ top: 50%;
93
+ left: -4px;
94
+ transform: translateY(-50%);
95
+ }
96
+
97
+ // ── Theme mixin ─────────────────────────────────────────────────────────────
98
+
99
+ @mixin matcha-tooltip-theme($theme) {
100
+ .matcha-tooltip-content {
101
+ background-color: var(--matcha-color-bg-inverse, #{getForeground($theme)});
102
+ color: var(--matcha-color-text-inverse, #{getForegroundInverse($theme)});
103
+
104
+ // Arrow colors per position
105
+ &:not(.matcha-tooltip-content_below):not(.matcha-tooltip-content_left):not(.matcha-tooltip-content_right)::after {
106
+ border-color: var(--matcha-color-bg-inverse, #{getForeground($theme)}) transparent transparent transparent;
107
+ }
108
+ }
109
+
110
+ .matcha-tooltip-content_below::before {
111
+ border-color: transparent transparent var(--matcha-color-bg-inverse, #{getForeground($theme)}) transparent;
112
+ }
113
+
114
+ .matcha-tooltip-content_left::after {
115
+ border-color: transparent transparent transparent var(--matcha-color-bg-inverse, #{getForeground($theme)});
116
+ }
117
+
118
+ .matcha-tooltip-content_right::after {
119
+ border-color: transparent var(--matcha-color-bg-inverse, #{getForeground($theme)}) transparent transparent;
120
+ }
121
+
122
+ .matcha-tooltip-close {
123
+ color: var(--matcha-color-text-inverse, #{getForegroundInverse($theme)});
124
+ opacity: 0.7;
125
+
126
+ &:hover { opacity: 1; }
127
+ }
128
+ }
@@ -0,0 +1,215 @@
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-uploader.scss — File upload component
5
+ // Aligned with Figma matcha/uploader:
6
+ // Estado(3: Dropzone, Enviando, Completo)
7
+ // Angular: matcha-uploader
8
+ // =============================================================================
9
+
10
+ @mixin matcha-uploader-theme($theme) {
11
+ $is-dark: map.get($theme, is-dark);
12
+
13
+ // ── Dropzone ──
14
+ .matcha-uploader-dropzone {
15
+ background: var(--matcha-color-surface-bg, #{getBackground($theme)});
16
+ border-color: var(--matcha-color-border, #{getGrey($theme)});
17
+
18
+ &.matcha-uploader-dragover {
19
+ background: var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
20
+ border-color: var(--matcha-color-accent, #{getAccent($theme)});
21
+ }
22
+
23
+ &.matcha-uploader-error {
24
+ border-color: var(--matcha-color-feedback-danger, #{getDanger($theme)});
25
+ }
26
+ }
27
+
28
+ .matcha-uploader-dropzone__icon {
29
+ background: var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
30
+ color: var(--matcha-color-accent, #{getAccent($theme)});
31
+ }
32
+
33
+ .matcha-uploader-dropzone__title {
34
+ color: var(--matcha-color-fg, #{getForeground($theme)});
35
+ }
36
+
37
+ .matcha-uploader-dropzone__hint {
38
+ color: var(--matcha-color-text-hint, #{getBlueGrey($theme)});
39
+ }
40
+
41
+ // ── File item ──
42
+ .matcha-uploader-file {
43
+ background: var(--matcha-color-surface, #{getSurface($theme)});
44
+ border-color: var(--matcha-color-border, #{getGrey($theme)});
45
+ }
46
+
47
+ .matcha-uploader-file__name {
48
+ color: var(--matcha-color-fg, #{getForeground($theme)});
49
+ }
50
+
51
+ .matcha-uploader-file__size {
52
+ color: var(--matcha-color-text-hint, #{getBlueGrey($theme)});
53
+ }
54
+
55
+ .matcha-uploader-file__progress-fill {
56
+ background: var(--matcha-color-accent, #{getAccent($theme)});
57
+ }
58
+
59
+ .matcha-uploader-file__percent {
60
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
61
+ }
62
+
63
+ .matcha-uploader-file__check {
64
+ color: var(--matcha-color-feedback-success, #{getSuccess($theme)});
65
+ }
66
+
67
+ .matcha-uploader-file__error-text {
68
+ color: var(--matcha-color-feedback-danger, #{getDanger($theme)});
69
+ }
70
+
71
+ .matcha-uploader-file__progress {
72
+ background: var(--matcha-color-border, #{getGrey($theme)});
73
+ }
74
+ }
75
+
76
+ // ── Dropzone Layout ─────────────────────────────────────────────────────────
77
+
78
+ .matcha-uploader-dropzone {
79
+ display: flex;
80
+ flex-direction: column;
81
+ align-items: center;
82
+ justify-content: center;
83
+ // Figma matcha/uploader Dropzone: pad 32/24, gap 16, radius 8
84
+ gap: var(--matcha-space-200, 16px);
85
+ padding: var(--matcha-space-400, 32px) var(--matcha-space-300, 24px);
86
+ border: 2px dashed transparent;
87
+ border-radius: var(--matcha-radius-lg, 8px);
88
+ cursor: pointer;
89
+ transition: background-color var(--matcha-duration-instant, 80ms) linear,
90
+ border-color var(--matcha-duration-instant, 80ms) linear;
91
+
92
+ &:hover {
93
+ opacity: 0.9;
94
+ }
95
+ }
96
+
97
+ .matcha-uploader-dropzone__icon {
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ width: var(--matcha-icon-size-lg, 48px);
102
+ height: var(--matcha-icon-size-lg, 48px);
103
+ border-radius: var(--matcha-radius-pill, 9999px);
104
+ }
105
+
106
+ .matcha-uploader-dropzone__text {
107
+ display: flex;
108
+ flex-direction: column;
109
+ align-items: center;
110
+ gap: var(--matcha-space-050, 4px);
111
+ text-align: center;
112
+ }
113
+
114
+ .matcha-uploader-dropzone__title {
115
+ font-family: var(--matcha-font-family);
116
+ font-size: var(--matcha-text-body-md, 14px);
117
+ font-weight: var(--matcha-weight-semibold, 600);
118
+ line-height: var(--matcha-leading-body-md, 20px);
119
+ }
120
+
121
+ .matcha-uploader-dropzone__hint {
122
+ font-family: var(--matcha-font-family);
123
+ font-size: var(--matcha-text-body-sm, 12px);
124
+ line-height: var(--matcha-leading-body-sm, 16px);
125
+ }
126
+
127
+ // Hidden input
128
+ .matcha-uploader-input {
129
+ display: none;
130
+ }
131
+
132
+ // ── File Item Layout ────────────────────────────────────────────────────────
133
+
134
+ .matcha-uploader-file {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: var(--matcha-space-150, 12px);
138
+ padding: var(--matcha-space-150, 12px) var(--matcha-space-200, 16px);
139
+ border: var(--matcha-border-hairline, 1px) solid transparent;
140
+ border-radius: var(--matcha-radius-lg, 8px);
141
+ }
142
+
143
+ .matcha-uploader-file__icon {
144
+ width: var(--matcha-space-500, 40px);
145
+ height: var(--matcha-space-500, 40px);
146
+ border-radius: var(--matcha-radius-md, 4px);
147
+ flex-shrink: 0;
148
+ overflow: hidden;
149
+
150
+ img {
151
+ width: 100%;
152
+ height: 100%;
153
+ object-fit: cover;
154
+ }
155
+ }
156
+
157
+ .matcha-uploader-file__info {
158
+ display: flex;
159
+ flex-direction: column;
160
+ gap: var(--matcha-space-050, 4px);
161
+ flex: 1;
162
+ min-width: 0;
163
+ }
164
+
165
+ .matcha-uploader-file__name {
166
+ font-family: var(--matcha-font-family);
167
+ font-size: var(--matcha-text-body-sm, 12px);
168
+ font-weight: var(--matcha-weight-medium, 500);
169
+ line-height: var(--matcha-leading-body-sm, 16px);
170
+ white-space: nowrap;
171
+ overflow: hidden;
172
+ text-overflow: ellipsis;
173
+ }
174
+
175
+ .matcha-uploader-file__size {
176
+ font-family: var(--matcha-font-family);
177
+ font-size: var(--matcha-text-caption, 11px);
178
+ }
179
+
180
+ // ── Progress ──
181
+ .matcha-uploader-file__progress {
182
+ width: 100%;
183
+ height: var(--matcha-border-medium, 4px);
184
+ border-radius: var(--matcha-radius-xs, 2px);
185
+ overflow: hidden;
186
+ }
187
+
188
+ .matcha-uploader-file__progress-fill {
189
+ height: 100%;
190
+ border-radius: var(--matcha-radius-xs, 2px);
191
+ transition: width var(--matcha-duration-moderate, 300ms) ease;
192
+ }
193
+
194
+ .matcha-uploader-file__percent {
195
+ font-family: var(--matcha-font-family);
196
+ font-size: var(--matcha-text-body-sm, 12px);
197
+ flex-shrink: 0;
198
+ }
199
+
200
+ // ── Responsive ──────────────────────────────────────────────────────────────
201
+
202
+ @include media-breakpoint('xs') {
203
+ .matcha-uploader-dropzone {
204
+ padding: var(--matcha-space-300, 24px) var(--matcha-space-200, 16px);
205
+ }
206
+ }
207
+
208
+ // ── Reduced motion ──────────────────────────────────────────────────────────
209
+
210
+ @media (prefers-reduced-motion: reduce) {
211
+ .matcha-uploader-dropzone,
212
+ .matcha-uploader-file__progress-fill {
213
+ transition: none;
214
+ }
215
+ }