angular-matecu 4.0.7 → 4.1.0

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 (126) hide show
  1. package/README.md +347 -130
  2. package/ng-package.json +7 -0
  3. package/package.json +6 -21
  4. package/src/lib/components/matecu-alert-box/matecu-alert-box.component.html +11 -0
  5. package/src/lib/components/matecu-alert-box/matecu-alert-box.component.scss +39 -0
  6. package/src/lib/components/matecu-alert-box/matecu-alert-box.component.spec.ts +25 -0
  7. package/src/lib/components/matecu-alert-box/matecu-alert-box.component.ts +60 -0
  8. package/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.html +24 -0
  9. package/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.scss +5 -0
  10. package/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.spec.ts +25 -0
  11. package/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.ts +53 -0
  12. package/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.html +10 -0
  13. package/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.scss +34 -0
  14. package/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.spec.ts +25 -0
  15. package/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.ts +45 -0
  16. package/src/lib/components/matecu-autocomplete/matecu-autocomplete.html +36 -0
  17. package/src/lib/components/matecu-autocomplete/matecu-autocomplete.scss +56 -0
  18. package/src/lib/components/matecu-autocomplete/matecu-autocomplete.spec.ts +23 -0
  19. package/src/lib/components/matecu-autocomplete/matecu-autocomplete.ts +336 -0
  20. package/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.html +64 -0
  21. package/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.scss +23 -0
  22. package/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.spec.ts +23 -0
  23. package/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.ts +314 -0
  24. package/src/lib/components/matecu-file-input/matecu-file-input-customization.md +284 -0
  25. package/src/lib/components/matecu-file-input/matecu-file-input.example.md +228 -0
  26. package/src/lib/components/matecu-file-input/matecu-file-input.html +128 -0
  27. package/src/lib/components/matecu-file-input/matecu-file-input.scss +461 -0
  28. package/src/lib/components/matecu-file-input/matecu-file-input.spec.ts +340 -0
  29. package/src/lib/components/matecu-file-input/matecu-file-input.ts +438 -0
  30. package/src/lib/components/matecu-spinner/matecu-spinner.component.css +15 -0
  31. package/src/lib/components/matecu-spinner/matecu-spinner.component.html +44 -0
  32. package/src/lib/components/matecu-spinner/matecu-spinner.component.spec.ts +25 -0
  33. package/src/lib/components/matecu-spinner/matecu-spinner.component.ts +54 -0
  34. package/src/lib/components/matecu-spinner/spinner-loader.component.scss +13 -0
  35. package/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.html +1 -0
  36. package/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.scss +19 -0
  37. package/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.spec.ts +25 -0
  38. package/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.ts +14 -0
  39. package/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.html +1 -0
  40. package/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.scss +14 -0
  41. package/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.spec.ts +25 -0
  42. package/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.ts +11 -0
  43. package/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.html +3 -0
  44. package/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.scss +19 -0
  45. package/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.spec.ts +25 -0
  46. package/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.ts +31 -0
  47. package/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.html +1 -0
  48. package/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.scss +8 -0
  49. package/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.spec.ts +23 -0
  50. package/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.ts +11 -0
  51. package/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.html +9 -0
  52. package/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.scss +34 -0
  53. package/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.spec.ts +23 -0
  54. package/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.ts +18 -0
  55. package/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.html +7 -0
  56. package/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.scss +49 -0
  57. package/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.spec.ts +25 -0
  58. package/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.ts +112 -0
  59. package/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.html +20 -0
  60. package/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.scss +90 -0
  61. package/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.spec.ts +25 -0
  62. package/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.ts +92 -0
  63. package/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.html +1 -0
  64. package/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.scss +91 -0
  65. package/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.spec.ts +25 -0
  66. package/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.ts +14 -0
  67. package/src/lib/modules/matecu-alert-box/matecu-alert-box.module.ts +16 -0
  68. package/src/lib/modules/matecu-spinner/matecu-spinner.module.ts +14 -0
  69. package/src/lib/modules/matecu-topbar-layout/matecu-topbar-layout.module.ts +45 -0
  70. package/src/lib/services/matecu-snack-bar.service.spec.ts +16 -0
  71. package/src/lib/services/matecu-snack-bar.service.ts +66 -0
  72. package/src/lib/services/matecu-spinner.service.spec.ts +16 -0
  73. package/src/lib/services/matecu-spinner.service.ts +39 -0
  74. package/src/lib/types/matecu-alert-dialog.ts +10 -0
  75. package/{lib/types/matecu-alert-snackbar.d.ts → src/lib/types/matecu-alert-snackbar.ts} +5 -4
  76. package/src/lib/types/matecu-altert-box-type.ts +6 -0
  77. package/src/lib/types/matecu-autocomplete.ts +5 -0
  78. package/{public-api.d.ts → src/public-api.ts} +14 -0
  79. package/tsconfig.lib.json +17 -0
  80. package/tsconfig.lib.prod.json +11 -0
  81. package/tsconfig.spec.json +15 -0
  82. package/CHANGELOG.md +0 -22
  83. package/esm2022/angular-matecu.mjs +0 -5
  84. package/esm2022/lib/components/matecu-alert-box/matecu-alert-box.component.mjs +0 -67
  85. package/esm2022/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.mjs +0 -54
  86. package/esm2022/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.mjs +0 -43
  87. package/esm2022/lib/components/matecu-spinner/matecu-spinner.component.mjs +0 -58
  88. package/esm2022/lib/components/matecu-topbar-action/matecu-topbar-action.component.mjs +0 -18
  89. package/esm2022/lib/components/matecu-topbar-body/matecu-topbar-body.component.mjs +0 -17
  90. package/esm2022/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.mjs +0 -43
  91. package/esm2022/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.mjs +0 -12
  92. package/esm2022/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.mjs +0 -29
  93. package/esm2022/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.mjs +0 -112
  94. package/esm2022/lib/components/matecu-topbar-search/matecu-topbar-search.component.mjs +0 -93
  95. package/esm2022/lib/components/matecu-topbar-title/matecu-topbar-title.component.mjs +0 -18
  96. package/esm2022/lib/modules/matecu-alert-box/matecu-alert-box.module.mjs +0 -24
  97. package/esm2022/lib/modules/matecu-spinner/matecu-spinner.module.mjs +0 -22
  98. package/esm2022/lib/modules/matecu-topbar-layout/matecu-topbar-layout.module.mjs +0 -83
  99. package/esm2022/lib/services/matecu-snack-bar.service.mjs +0 -66
  100. package/esm2022/lib/services/matecu-spinner.service.mjs +0 -44
  101. package/esm2022/lib/types/matecu-alert-dialog.mjs +0 -2
  102. package/esm2022/lib/types/matecu-alert-snackbar.mjs +0 -2
  103. package/esm2022/lib/types/matecu-altert-box-type.mjs +0 -8
  104. package/esm2022/public-api.mjs +0 -32
  105. package/fesm2022/angular-matecu.mjs +0 -735
  106. package/fesm2022/angular-matecu.mjs.map +0 -1
  107. package/index.d.ts +0 -5
  108. package/lib/components/matecu-alert-box/matecu-alert-box.component.d.ts +0 -19
  109. package/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.d.ts +0 -22
  110. package/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.d.ts +0 -20
  111. package/lib/components/matecu-spinner/matecu-spinner.component.d.ts +0 -20
  112. package/lib/components/matecu-topbar-action/matecu-topbar-action.component.d.ts +0 -9
  113. package/lib/components/matecu-topbar-body/matecu-topbar-body.component.d.ts +0 -6
  114. package/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.d.ts +0 -12
  115. package/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.d.ts +0 -5
  116. package/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.d.ts +0 -8
  117. package/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.d.ts +0 -27
  118. package/lib/components/matecu-topbar-search/matecu-topbar-search.component.d.ts +0 -27
  119. package/lib/components/matecu-topbar-title/matecu-topbar-title.component.d.ts +0 -9
  120. package/lib/modules/matecu-alert-box/matecu-alert-box.module.d.ts +0 -14
  121. package/lib/modules/matecu-spinner/matecu-spinner.module.d.ts +0 -8
  122. package/lib/modules/matecu-topbar-layout/matecu-topbar-layout.module.d.ts +0 -19
  123. package/lib/services/matecu-snack-bar.service.d.ts +0 -17
  124. package/lib/services/matecu-spinner.service.d.ts +0 -15
  125. package/lib/types/matecu-alert-dialog.d.ts +0 -9
  126. package/lib/types/matecu-altert-box-type.d.ts +0 -6
@@ -0,0 +1,461 @@
1
+ :host {
2
+ display: block;
3
+ width: 100%;
4
+ > * {
5
+ box-sizing: border-box;
6
+ }
7
+ // 🎨 Matecu File Input CSS Custom Properties
8
+ // Base color palette
9
+ --matecu-file-input-color-primary: #4f46e5;
10
+ --matecu-file-input-color-primary-hover: #4338ca;
11
+ --matecu-file-input-color-success: #10b981;
12
+ --matecu-file-input-color-error: #ef4444;
13
+ --matecu-file-input-color-error-hover: #dc2626;
14
+ --matecu-file-input-color-loading: #8b5cf6;
15
+ --matecu-file-input-color-disabled: #9ca3af;
16
+
17
+ // Border colors
18
+ --matecu-file-input-border-default: #e1e5e9;
19
+ --matecu-file-input-border-hover: var(--matecu-file-input-color-primary);
20
+ --matecu-file-input-border-success: var(--matecu-file-input-color-success);
21
+ --matecu-file-input-border-error: var(--matecu-file-input-color-error);
22
+ --matecu-file-input-border-loading: var(--matecu-file-input-color-loading);
23
+ --matecu-file-input-border-separator: #e5e7eb;
24
+
25
+ // Background colors
26
+ --matecu-file-input-bg-default: #fafbfc;
27
+ --matecu-file-input-bg-hover: #f8faff;
28
+ --matecu-file-input-bg-drag-over: #eef2ff;
29
+ --matecu-file-input-bg-disabled: #f5f5f5;
30
+ --matecu-file-input-bg-success: #f0fdf4;
31
+ --matecu-file-input-bg-error: #fef2f2;
32
+ --matecu-file-input-bg-loading: #faf5ff;
33
+ --matecu-file-input-bg-surface: #ffffff;
34
+ --matecu-file-input-bg-surface-alt: #f3f4f6;
35
+
36
+ // Text colors
37
+ --matecu-file-input-text-primary: #111827;
38
+ --matecu-file-input-text-secondary: #374151;
39
+ --matecu-file-input-text-muted: #6b7280;
40
+ --matecu-file-input-text-disabled: #9ca3af;
41
+ --matecu-file-input-text-on-primary: #ffffff;
42
+ --matecu-file-input-text-error: #dc2626;
43
+
44
+ // Button colors
45
+ --matecu-file-input-button-primary-bg: var(--matecu-file-input-color-primary);
46
+ --matecu-file-input-button-primary-bg-hover: var(--matecu-file-input-color-primary-hover);
47
+ --matecu-file-input-button-primary-text: var(--matecu-file-input-text-on-primary);
48
+ --matecu-file-input-button-danger-bg: var(--matecu-file-input-color-error);
49
+ --matecu-file-input-button-danger-bg-hover: var(--matecu-file-input-color-error-hover);
50
+ --matecu-file-input-button-danger-text: var(--matecu-file-input-text-on-primary);
51
+ --matecu-file-input-button-disabled-bg: var(--matecu-file-input-color-disabled);
52
+
53
+ // Spinner colors
54
+ --matecu-file-input-spinner-track: #e5e7eb;
55
+ --matecu-file-input-spinner-fill: var(--matecu-file-input-color-loading);
56
+
57
+ // Shadow colors
58
+ --matecu-file-input-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
59
+ --matecu-file-input-shadow-md: 0 1px 3px rgba(0, 0, 0, 0.1);
60
+
61
+ // Spacing and sizing
62
+ --matecu-file-input-border-radius-sm: 4px;
63
+ --matecu-file-input-border-radius-md: 6px;
64
+ --matecu-file-input-border-radius-lg: 8px;
65
+ --matecu-file-input-border-radius-xl: 12px;
66
+ --matecu-file-input-border-width: 2px;
67
+
68
+ input[type='file'] {
69
+ display: none;
70
+ }
71
+ }
72
+
73
+ .file-input-container {
74
+ position: relative;
75
+ border: var(--matecu-file-input-border-width) dashed var(--matecu-file-input-border-default);
76
+ border-radius: var(--matecu-file-input-border-radius-lg);
77
+ padding: 24px;
78
+ transition: all 0.3s ease;
79
+ background-color: var(--matecu-file-input-bg-default);
80
+ cursor: pointer;
81
+ min-height: 120px;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: center;
85
+
86
+ &:hover:not(.disabled) {
87
+ border-color: var(--matecu-file-input-border-hover);
88
+ background-color: var(--matecu-file-input-bg-hover);
89
+ }
90
+
91
+ &.drag-over {
92
+ border-color: var(--matecu-file-input-border-hover);
93
+ background-color: var(--matecu-file-input-bg-drag-over);
94
+ transform: scale(1.02);
95
+ }
96
+
97
+ &.disabled {
98
+ opacity: 0.6;
99
+ cursor: not-allowed;
100
+ background-color: var(--matecu-file-input-bg-disabled);
101
+ }
102
+
103
+ &.has-files {
104
+ border-style: solid;
105
+ border-color: var(--matecu-file-input-border-success);
106
+ background-color: var(--matecu-file-input-bg-success);
107
+ }
108
+
109
+ &.has-errors {
110
+ border-color: var(--matecu-file-input-border-error);
111
+ background-color: var(--matecu-file-input-bg-error);
112
+ }
113
+
114
+ &.loading {
115
+ border-color: var(--matecu-file-input-border-loading);
116
+ background-color: var(--matecu-file-input-bg-loading);
117
+ }
118
+ }
119
+
120
+ // Loading state
121
+ .loading-container {
122
+ display: flex;
123
+ flex-direction: column;
124
+ align-items: center;
125
+ gap: 12px;
126
+ color: var(--matecu-file-input-text-muted);
127
+
128
+ .spinner {
129
+ width: 32px;
130
+ height: 32px;
131
+ border: 3px solid var(--matecu-file-input-spinner-track);
132
+ border-top: 3px solid var(--matecu-file-input-spinner-fill);
133
+ border-radius: 50%;
134
+ animation: spin 1s linear infinite;
135
+ }
136
+
137
+ .loading-text {
138
+ font-size: 14px;
139
+ font-weight: 500;
140
+ }
141
+ }
142
+
143
+ @keyframes spin {
144
+ 0% {
145
+ transform: rotate(0deg);
146
+ }
147
+ 100% {
148
+ transform: rotate(360deg);
149
+ }
150
+ }
151
+
152
+ // Drop zone styles
153
+ .drop-zone {
154
+ text-align: center;
155
+ width: 100%;
156
+
157
+ .drop-zone-icon {
158
+ font-size: 48px;
159
+ margin-bottom: 16px;
160
+ }
161
+
162
+ .drop-zone-content {
163
+ .drop-zone-title {
164
+ font-size: 16px;
165
+ font-weight: 600;
166
+ color: var(--matecu-file-input-text-secondary);
167
+ margin-bottom: 12px;
168
+ }
169
+
170
+ .drop-zone-subtitle {
171
+ font-size: 14px;
172
+ color: var(--matecu-file-input-text-muted);
173
+ margin-top: 8px;
174
+ }
175
+ }
176
+
177
+ .select-button {
178
+ background-color: var(--matecu-file-input-button-primary-bg);
179
+ color: var(--matecu-file-input-button-primary-text);
180
+ border: none;
181
+ padding: 12px 24px;
182
+ border-radius: var(--matecu-file-input-border-radius-md);
183
+ font-weight: 500;
184
+ cursor: pointer;
185
+ transition: background-color 0.2s ease;
186
+
187
+ &:hover:not(:disabled) {
188
+ background-color: var(--matecu-file-input-button-primary-bg-hover);
189
+ }
190
+
191
+ &:disabled {
192
+ background-color: var(--matecu-file-input-button-disabled-bg);
193
+ cursor: not-allowed;
194
+ }
195
+ }
196
+ }
197
+
198
+ // Single file display
199
+ .single-file-display {
200
+ box-sizing: border-box;
201
+ display: grid;
202
+ grid-template-columns: 1fr 32px;
203
+ align-items: center;
204
+ justify-content: space-between;
205
+ width: 100%;
206
+ padding: 16px;
207
+ background-color: var(--matecu-file-input-bg-surface);
208
+ border-radius: var(--matecu-file-input-border-radius-md);
209
+ box-shadow: var(--matecu-file-input-shadow-md);
210
+
211
+ .file-info {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: 16px;
215
+ overflow: hidden;
216
+ .file-preview {
217
+ img {
218
+ border-radius: var(--matecu-file-input-border-radius-sm);
219
+ object-fit: cover;
220
+ }
221
+ }
222
+
223
+ .file-icon {
224
+ width: 48px;
225
+ height: 48px;
226
+ background-color: var(--matecu-file-input-bg-surface-alt);
227
+ border-radius: var(--matecu-file-input-border-radius-md);
228
+ display: flex;
229
+ align-items: center;
230
+ justify-content: center;
231
+ font-size: 24px;
232
+ color: var(--matecu-file-input-text-muted);
233
+ }
234
+
235
+ .file-details {
236
+ max-width: calc(100% - 48px - 16px);
237
+ .file-name {
238
+ max-width: 100%;
239
+ font-size: 16px;
240
+ font-weight: 600;
241
+ color: var(--matecu-file-input-text-primary);
242
+ margin: 0 0 4px 0;
243
+ display: inline-block;
244
+ text-overflow: ellipsis;
245
+ white-space: nowrap;
246
+ overflow: hidden;
247
+ }
248
+
249
+ .file-size {
250
+ font-size: 14px;
251
+ color: var(--matecu-file-input-text-muted);
252
+ margin: 0 0 2px 0;
253
+ }
254
+
255
+ .file-type {
256
+ font-size: 12px;
257
+ color: var(--matecu-file-input-text-disabled);
258
+ margin: 0;
259
+ }
260
+ }
261
+ }
262
+
263
+ .remove-file-button {
264
+ background-color: var(--matecu-file-input-button-danger-bg);
265
+ color: var(--matecu-file-input-button-danger-text);
266
+ border: none;
267
+ width: 32px;
268
+ height: 32px;
269
+ border-radius: 50%;
270
+ cursor: pointer;
271
+ display: flex;
272
+ align-items: center;
273
+ justify-content: center;
274
+ font-size: 16px;
275
+ transition: background-color 0.2s ease;
276
+
277
+ &:hover {
278
+ background-color: var(--matecu-file-input-button-danger-bg-hover);
279
+ }
280
+ }
281
+ }
282
+
283
+ // Multiple files display
284
+ .multiple-files-display {
285
+ width: 100%;
286
+
287
+ .files-header {
288
+ display: flex;
289
+ justify-content: space-between;
290
+ align-items: center;
291
+ margin-bottom: 16px;
292
+ padding-bottom: 8px;
293
+ border-bottom: 1px solid var(--matecu-file-input-border-separator);
294
+
295
+ h3 {
296
+ font-size: 16px;
297
+ font-weight: 600;
298
+ color: var(--matecu-file-input-text-primary);
299
+ margin: 0;
300
+ }
301
+
302
+ .files-counter {
303
+ font-size: 14px;
304
+ color: var(--matecu-file-input-text-muted);
305
+ background-color: var(--matecu-file-input-bg-surface-alt);
306
+ padding: 4px 8px;
307
+ border-radius: var(--matecu-file-input-border-radius-xl);
308
+ }
309
+ }
310
+
311
+ .files-list {
312
+ display: flex;
313
+ flex-direction: column;
314
+ gap: 8px;
315
+ margin-bottom: 16px;
316
+ }
317
+
318
+ .file-item {
319
+ display: flex;
320
+ align-items: center;
321
+ gap: 12px;
322
+ padding: 12px;
323
+ background-color: var(--matecu-file-input-bg-surface);
324
+ border-radius: var(--matecu-file-input-border-radius-md);
325
+ box-shadow: var(--matecu-file-input-shadow-sm);
326
+ border: 1px solid var(--matecu-file-input-border-separator);
327
+
328
+ .file-preview-small,
329
+ .file-icon-small {
330
+ width: 32px;
331
+ height: 32px;
332
+ background-color: var(--matecu-file-input-bg-surface-alt);
333
+ border-radius: var(--matecu-file-input-border-radius-sm);
334
+ display: flex;
335
+ align-items: center;
336
+ justify-content: center;
337
+ font-size: 14px;
338
+ color: var(--matecu-file-input-text-muted);
339
+ flex-shrink: 0;
340
+
341
+ img {
342
+ width: 100%;
343
+ height: 100%;
344
+ object-fit: cover;
345
+ border-radius: var(--matecu-file-input-border-radius-sm);
346
+ }
347
+ }
348
+
349
+ .file-item-details {
350
+ flex: 1;
351
+ min-width: 0;
352
+
353
+ .file-item-name {
354
+ font-size: 14px;
355
+ font-weight: 500;
356
+ color: var(--matecu-file-input-text-primary);
357
+ white-space: nowrap;
358
+ overflow: hidden;
359
+ text-overflow: ellipsis;
360
+ }
361
+
362
+ .file-item-size {
363
+ font-size: 12px;
364
+ color: var(--matecu-file-input-text-muted);
365
+ }
366
+ }
367
+
368
+ .remove-file-button-small {
369
+ background-color: var(--matecu-file-input-button-danger-bg);
370
+ color: var(--matecu-file-input-button-danger-text);
371
+ border: none;
372
+ width: 24px;
373
+ height: 24px;
374
+ border-radius: 50%;
375
+ cursor: pointer;
376
+ display: flex;
377
+ align-items: center;
378
+ justify-content: center;
379
+ font-size: 12px;
380
+ flex-shrink: 0;
381
+ transition: background-color 0.2s ease;
382
+
383
+ &:hover {
384
+ background-color: var(--matecu-file-input-button-danger-bg-hover);
385
+ }
386
+ }
387
+ }
388
+
389
+ .add-more-button {
390
+ width: 100%;
391
+ background-color: var(--matecu-file-input-bg-surface-alt);
392
+ color: var(--matecu-file-input-text-muted);
393
+ border: var(--matecu-file-input-border-width) dashed var(--matecu-file-input-border-separator);
394
+ padding: 12px;
395
+ border-radius: var(--matecu-file-input-border-radius-md);
396
+ cursor: pointer;
397
+ font-weight: 500;
398
+ transition: all 0.2s ease;
399
+
400
+ &:hover {
401
+ background-color: var(--matecu-file-input-bg-hover);
402
+ border-color: var(--matecu-file-input-text-disabled);
403
+ }
404
+ }
405
+ }
406
+
407
+ // Error messages
408
+ .error-messages {
409
+ margin-top: 12px;
410
+
411
+ .error-message {
412
+ background-color: var(--matecu-file-input-bg-error);
413
+ color: var(--matecu-file-input-text-error);
414
+ padding: 8px 12px;
415
+ border-radius: var(--matecu-file-input-border-radius-sm);
416
+ border-left: 4px solid var(--matecu-file-input-color-error);
417
+ font-size: 14px;
418
+ margin-bottom: 4px;
419
+
420
+ &:last-child {
421
+ margin-bottom: 0;
422
+ }
423
+ }
424
+ }
425
+
426
+ // Responsive design
427
+ @media (max-width: 640px) {
428
+ .file-input-container {
429
+ padding: 16px;
430
+ min-height: 100px;
431
+ }
432
+
433
+ .single-file-display .file-info {
434
+ gap: 12px;
435
+
436
+ // flex: 1;
437
+ @media screen and (max-width: 425px) {
438
+ flex-direction: column;
439
+ }
440
+ .file-icon,
441
+ .file-preview {
442
+ width: 40px;
443
+ height: 40px;
444
+ @media screen and (max-width: 425px) {
445
+ width: 60px;
446
+ height: 60px;
447
+ }
448
+ img {
449
+ width: 100%;
450
+ height: 100%;
451
+ object-fit: cover;
452
+ }
453
+ }
454
+ }
455
+
456
+ .files-header {
457
+ flex-direction: column;
458
+ align-items: flex-start;
459
+ gap: 8px;
460
+ }
461
+ }